portability: replace M_PI / std::numbers::pi with a host+device-safe PI
M_PI is a POSIX <math.h> extension that MSVC does not define without _USE_MATH_DEFINES. std::numbers::pi (introduced in the viewer guard commit) is C++20, but CUDA here is compiled as C++17 (CMAKE_CUDA_STANDARD 17) and several common/ headers are pulled into .cu device translation units, so std::numbers is not available there. Add common/JFJochMath.h with a dependency-free `constexpr double PI` that works in host code (including MSVC), in CUDA device code, and under C++17/20, and use it everywhere: - common/ and image_analysis/ (incl. CUDA .cu): 78 M_PI occurrences, 22 files - broker/OpenAPIConvert.cpp - viewer/: the 5 files that used std::numbers::pi now use PI, for one consistent convention across the codebase Verified to build: JFJochImageAnalysis (incl. CUDA), jfjoch_viewer, JFJochBroker. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
#include <QPushButton>
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <numbers>
|
||||
#include "../../common/JFJochMath.h"
|
||||
|
||||
#include "../image_analysis/geom_refinement/AssignSpotsToRings.h"
|
||||
|
||||
@@ -26,7 +26,7 @@ PowderCalibrationWidget::PowderCalibrationWidget(QWidget *parent) : QWidget(pare
|
||||
std::vector<float> rings = CalculateXtalRings(GetCalibrant(), 10);
|
||||
QVector<float> q_rings;
|
||||
for (float ring : rings) {
|
||||
q_rings.append(2 * std::numbers::pi / ring);
|
||||
q_rings.append(2 * PI / ring);
|
||||
}
|
||||
emit ringsFromCalibration(q_rings);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user