17 #if !defined(ON_MATH_INC_) 38 void operator=(
double x);
44 void operator+=(
double x);
50 void operator-=(
double x);
65 void Begin(
double starting_value = 0.0 );
73 void Plus(
double x );
83 void Plus(
double x,
double dx );
98 double Total(
double* error_estimate =
nullptr );
104 int SummandCount()
const;
120 int m_pos_sum1_count;
121 int m_pos_sum2_count;
122 int m_pos_sum3_count;
123 double m_pos_sum1[sum1_max_count];
124 double m_pos_sum2[sum2_max_count];
125 double m_pos_sum3[sum3_max_count];
127 int m_neg_sum1_count;
128 int m_neg_sum2_count;
129 int m_neg_sum3_count;
130 double m_neg_sum1[sum1_max_count];
131 double m_neg_sum2[sum2_max_count];
132 double m_neg_sum3[sum3_max_count];
134 double SortAndSum(
int,
double* );
219 virtual int Evaluate(
220 const double* parameters,
255 virtual int EvaluateHessian(
256 const double* parameters,
264 const int m_parameter_count;
268 const int m_value_count;
280 bool FiniteDomain()
const;
340 bool ON_IsValid(
double x );
349 int ON_CompareDouble(
355 int ON_CompareDoubleArray(
374 bool ON_IsValidFloat(
float x );
377 bool ON_IsNaNd(
double x);
380 bool ON_IsQNaNd(
double x);
383 bool ON_IsSNaNd(
double x);
386 bool ON_IsNaNf(
float x);
389 bool ON_IsQNaNf(
float x);
392 bool ON_IsSNaNf(
float x);
411 #if defined(ON_LITTLE_ENDIAN) 414 #define ON_IS_FINITE(x) (0x7FF0 != (*((unsigned short*)(&x) + 3) & 0x7FF0)) 415 #define ON_IS_INFINITE(x) (0x7FF0 == (*((unsigned short*)(&x) + 3) & 0x7FF0)) 417 #elif defined(ON_BIG_ENDIAN) 420 #define ON_IS_FINITE(x) (0x7FF0 != (*((unsigned short*)(&x)) & 0x7FF0)) 421 #define ON_IS_INFINITE(x) (0x7FF0 == (*((unsigned short*)(&x)) & 0x7FF0)) 436 #if defined(_GNU_SOURCE) 439 #define ON_IS_FINITE(x) (isfinite(x)?true:false) 441 #define ON_IS_FINITE(x) (_finite(x)?true:false) 446 #define ON_IS_FINITE_FLOAT(x) ((x) <= 3.402823466e+38F && (x) >= -3.402823466e+38F) 447 #define ON_IS_INFINITE_FLOAT(x) ((x) > 3.402823466e+38F || (x) < -3.402823466e+38F) 449 #define ON_IS_VALID(x) ((x) != ON_UNSET_VALUE && (x) != ON_UNSET_POSITIVE_VALUE && ON_IS_FINITE(x)) 450 #define ON_IS_VALID_FLOAT(x) ((x) != ON_UNSET_FLOAT && (x) != ON_UNSET_POSITIVE_FLOAT && ON_IS_FINITE_FLOAT(x)) 451 #define ON_IS_UNSET_DOUBLE(x) (ON_UNSET_VALUE == (x) || ON_UNSET_POSITIVE_VALUE == (x)) 452 #define ON_IS_UNSET_FLOAT(x) (ON_UNSET_FLOAT == (x) || ON_UNSET_POSITIVE_FLOAT == (x)) 453 #define ON_IS_NAN(x) (!((x)==(x)) 456 float ON_ArrayDotProduct(
471 void ON_Array_aA_plus_B(
480 double ON_ArrayDotProduct(
487 double ON_ArrayDotDifference(
495 double ON_ArrayMagnitude(
501 double ON_ArrayMagnitudeSquared(
507 double ON_ArrayDistance(
514 double ON_ArrayDistanceSquared(
529 void ON_Array_aA_plus_B(
538 int ON_SearchMonotoneArray(
571 double ON_BinomialCoefficient(
599 double ON_TrinomialCoefficient(
607 bool ON_GetParameterTolerance(
615 bool ON_IsValidPointList(
624 bool ON_IsValidPointList(
667 int ON_IsPointListPlanar(
671 const double* points,
672 const double* boxMin,
673 const double* boxMax,
679 bool ON_IsValidPointGrid(
688 bool ON_ReversePointList(
697 bool ON_ReversePointGrid(
707 bool ON_SwapPointListCoordinates(
715 bool ON_SwapPointListCoordinates(
723 bool ON_SwapPointGridCoordinates(
731 bool ON_TransformPointList(
741 bool ON_TransformPointList(
751 bool ON_TransformPointGrid(
761 bool ON_TransformVectorList(
770 bool ON_TransformVectorList(
794 bool ON_PointsAreCoincident(
797 const double* pointA,
823 bool ON_PointsAreCoincident(
843 int ON_ComparePointList(
859 bool ON_IsPointListClosed(
868 bool ON_IsPointGridClosed(
915 unsigned int* ON_GetPointLocationIds(
920 unsigned int first_point_id,
921 unsigned int* point_ids,
922 unsigned int* point_id_map
926 unsigned int* ON_GetPointLocationIds(
930 const double* points,
931 unsigned int first_point_id,
932 unsigned int* point_ids,
933 unsigned int* point_id_map
937 unsigned int* ON_GetPointLocationIds(
940 unsigned int first_point_id,
941 unsigned int* point_ids,
942 unsigned int* point_id_map
946 unsigned int* ON_GetPointLocationIds(
949 unsigned int first_point_id,
950 unsigned int* point_ids,
951 unsigned int* point_id_map
955 unsigned int* ON_GetPointLocationIds(
958 unsigned int first_point_id,
959 unsigned int* point_ids,
960 unsigned int* point_id_map
964 unsigned int* ON_GetPointLocationIds(
967 unsigned int first_point_id,
968 unsigned int* point_ids,
969 unsigned int* point_id_map
974 int ON_SolveQuadraticEquation(
981 double,
double,
double,
991 int ON_SolveTriDiagonal(
1101 const double row0[3],
1102 const double row1[3],
1103 const double row2[3],
1164 const double row0[4],
1165 const double row1[4],
1166 const double row2[4],
1167 const double row3[4],
1235 double ON_SolveNxN(
bool bFullPivot,
bool bNormalize,
int n,
double* M[],
double B[],
double X[]);
1264 bool ON_Sym3x3EigenSolver(
double A,
double B,
double C,
1265 double D,
double E,
double F,
1298 int ON_DecomposeVector(
1302 double* x,
double* y
1323 bool ON_EvNormalPartials(
1335 ON_Pullback3dVector(
1349 ON_GetParameterTolerance(
1376 bool ON_EvCurvature(
1384 bool ON_EvPrincipalCurvatures(
1401 bool ON_EvPrincipalCurvatures(
1438 bool ON_EvSectionalCurvature(
1511 bool ON_IsCurvatureDiscontinuity(
1514 double cos_angle_tolerance,
1515 double curvature_tolerance,
1516 double zero_curvature,
1517 double radius_tolerance,
1518 double relative_tolerance
1522 bool ON_IsCurvatureDiscontinuity(
1525 double cos_angle_tolerance,
1526 double curvature_tolerance,
1527 double zero_curvature,
1528 double radius_tolerance
1547 bool ON_IsG2CurvatureContinuous(
1550 double cos_angle_tolerance,
1551 double curvature_tolerance
1569 bool ON_IsGsmoothCurvatureContinuous(
1572 double cos_angle_tolerance,
1573 double curvature_tolerance
1607 bool ON_IsContinuous(
1615 double point_tolerance=ON_ZERO_TOLERANCE,
1616 double d1_tolerance=ON_ZERO_TOLERANCE,
1617 double d2_tolerance=ON_ZERO_TOLERANCE,
1618 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
1619 double curvature_tolerance=ON_SQRT_EPSILON
1624 bool ON_TuneupEvaluationParameter(
1626 double s0,
double s1,
1632 int ON_Compare2dex(
const ON_2dex* a,
const ON_2dex* b);
1635 int ON_Compare3dex(
const ON_3dex* a,
const ON_3dex* b);
1638 int ON_Compare4dex(
const ON_4dex* a,
const ON_4dex* b);
1641 const ON_2dex* ON_BinarySearch2dexArray(
1643 const ON_2dex* base,
1837 int ON_ArePointsOnLine(
1850 int ON_ArePointsOnPlane(
1886 bool ON_EvaluateQuotientRule(
1918 bool ON_EvaluateQuotientRule2(
1954 bool ON_EvaluateQuotientRule3(
1962 bool ON_GetPolylineLength(
1986 bool ON_GetClosestPointInPointList(
1990 int* closest_point_index
2036 double ON_TestMathFunction(
2044 ON_DECL
double ON_Max(
double a,
double b);
2048 ON_DECL
float ON_Max(
float a,
float b);
2052 ON_DECL
int ON_Max(
int a,
int b);
2056 ON_DECL
double ON_Min(
double a,
double b);
2060 ON_DECL
float ON_Min(
float a,
float b);
2064 ON_DECL
int ON_Min(
int a,
int b);
2070 ON_DECL
int ON_Round(
double x);
2080 ON_DECL
double ON_LinearInterpolation(
2119 ON_DECL
bool ON_GetConicEquationThrough6Points(
2121 const double* points2d,
2149 ON_DECL
bool ON_IsConicEquationAnEllipse(
2150 const double conic[6],
2154 double* major_radius,
2155 double* minor_radius
2199 ON_DECL
bool ON_GetEllipseConicEquation(
2201 double x0,
double y0,
2212 ON_DECL
double ON_Length2d(
double x,
double y );
2220 ON_DECL
double ON_Length3d(
double x,
double y,
double z );
2235 double ON_TriangleArea3d(
2253 double ON_TriangleArea2d(
2270 ON_DECL
float ON_FloatFloor(
double x);
2282 ON_DECL
float ON_FloatCeil(
double x);
Class for carefully adding long list of numbers.
Definition: opennurbs_math.h:29
An ON_Arc is a subcurve of 3d circle.
Definition: opennurbs_arc.h:33
ON_Cylinder is a right circular cylinder.
Definition: opennurbs_cylinder.h:27
Definition: opennurbs_fpoint.h:211
ON_Circle is a circle in 3d. The cirle is represented by a radius and an orthonormal frame of the pla...
Definition: opennurbs_circle.h:32
Definition: opennurbs_point.h:277
Definition: opennurbs_bounding_box.h:25
Abstract function with an arbitrary number of parameters and values. ON_Evaluator is used to pass fun...
Definition: opennurbs_math.h:130
Definition: opennurbs_line.h:20
Definition: opennurbs_fpoint.h:38
Definition: opennurbs_point.h:460
Definition: opennurbs_plane.h:20
Typically the vector portion is a unit vector and m_d = -(x*P.x + y*P.y + z*P.z) for a point P on the...
Definition: opennurbs_point.h:1433
Definition: opennurbs_point.h:839
Definition: opennurbs_point.h:1152
Definition: opennurbs_point.h:46
Definition: opennurbs_sphere.h:22