17#if !defined(ON_MATH_INC_)
65 void Begin(
double starting_value = 0.0 );
88 double Total(
double* error_estimate = NULL );
110 int m_pos_sum1_count;
111 int m_pos_sum2_count;
112 int m_pos_sum3_count;
113 double m_pos_sum1[sum1_max_count];
114 double m_pos_sum2[sum2_max_count];
115 double m_pos_sum3[sum3_max_count];
117 int m_neg_sum1_count;
118 int m_neg_sum2_count;
119 int m_neg_sum3_count;
120 double m_neg_sum1[sum1_max_count];
121 double m_neg_sum2[sum2_max_count];
122 double m_neg_sum3[sum3_max_count];
124 double SortAndSum(
int,
double* );
210 const double* parameters,
246 const double* parameters,
330bool ON_IsValid(
double x );
333bool ON_IsValidFloat(
float x );
352#if defined(ON_LITTLE_ENDIAN)
355#define ON_IS_FINITE(x) (0x7FF0 != (*((unsigned short*)(&x) + 3) & 0x7FF0))
356#define ON_IS_VALID(x) (x != ON_UNSET_VALUE && 0x7FF0 != (*((unsigned short*)(&x) + 3) & 0x7FF0))
357#define ON_IS_VALID_FLOAT(x) (x != ON_UNSET_FLOAT)
360#elif defined(ON_BIG_ENDIAN)
363#define ON_IS_FINITE(x) (0x7FF0 != (*((unsigned short*)(&x)) & 0x7FF0))
364#define ON_IS_VALID(x) (x != ON_UNSET_VALUE && 0x7FF0 != (*((unsigned short*)(&x)) & 0x7FF0))
365#define ON_IS_VALID_FLOAT(x) (x != ON_UNSET_FLOAT)
381#if defined(_GNU_SOURCE)
384#define ON_IS_FINITE(x) (isfinite(x)?true:false)
386#define ON_IS_FINITE(x) (_finite(x)?true:false)
389#define ON_IS_VALID(x) (x != ON_UNSET_VALUE && ON_IS_FINITE(x))
390#define ON_IS_VALID_FLOAT(x) (x != ON_UNSET_FLOAT && ON_IS_FINITE(x))
396float ON_ArrayDotProduct(
411void ON_Array_aA_plus_B(
420double ON_ArrayDotProduct(
427double ON_ArrayDotDifference(
435double ON_ArrayMagnitude(
441double ON_ArrayMagnitudeSquared(
447double ON_ArrayDistance(
454double ON_ArrayDistanceSquared(
469void ON_Array_aA_plus_B(
478int ON_SearchMonotoneArray(
511double ON_BinomialCoefficient(
539double ON_TrinomialCoefficient(
547ON_BOOL32 ON_GetParameterTolerance(
555ON_BOOL32 ON_IsValidPointList(
564ON_BOOL32 ON_IsValidPointList(
607int ON_IsPointListPlanar(
611 const double* points,
612 const double* boxMin,
613 const double* boxMax,
619ON_BOOL32 ON_IsValidPointGrid(
628bool ON_ReversePointList(
637ON_BOOL32 ON_ReversePointGrid(
647bool ON_SwapPointListCoordinates(
655bool ON_SwapPointListCoordinates(
663ON_BOOL32 ON_SwapPointGridCoordinates(
671bool ON_TransformPointList(
681bool ON_TransformPointList(
691ON_BOOL32 ON_TransformPointGrid(
701ON_BOOL32 ON_TransformVectorList(
710ON_BOOL32 ON_TransformVectorList(
734bool ON_PointsAreCoincident(
737 const double* pointA,
763bool ON_PointsAreCoincident(
783int ON_ComparePointList(
799ON_BOOL32 ON_IsPointListClosed(
808ON_BOOL32 ON_IsPointGridClosed(
818int ON_SolveQuadraticEquation(
825 double,
double,
double,
830ON_BOOL32 ON_SolveTriDiagonal(
940 const double row0[3],
941 const double row1[3],
942 const double row2[3],
1003 const double row0[4],
1004 const double row1[4],
1005 const double row2[4],
1006 const double row3[4],
1074double ON_SolveNxN(
bool bFullPivot,
bool bNormalize,
int n,
double* M[],
double B[],
double X[]);
1079ON_BOOL32 ON_EvJacobian(
1105int ON_DecomposeVector(
1109 double* x,
double* y
1130ON_BOOL32 ON_EvNormalPartials(
1156ON_GetParameterTolerance(
1166ON_BOOL32 ON_EvNormal(
1183ON_BOOL32 ON_EvCurvature(
1191ON_BOOL32 ON_EvPrincipalCurvatures(
1208ON_BOOL32 ON_EvPrincipalCurvatures(
1245bool ON_EvSectionalCurvature(
1318bool ON_IsCurvatureDiscontinuity(
1321 double cos_angle_tolerance,
1322 double curvature_tolerance,
1323 double zero_curvature,
1324 double radius_tolerance,
1325 double relative_tolerance
1329bool ON_IsCurvatureDiscontinuity(
1332 double cos_angle_tolerance,
1333 double curvature_tolerance,
1334 double zero_curvature,
1335 double radius_tolerance
1354bool ON_IsG2CurvatureContinuous(
1357 double cos_angle_tolerance,
1358 double curvature_tolerance
1376bool ON_IsGsmoothCurvatureContinuous(
1379 double cos_angle_tolerance,
1380 double curvature_tolerance
1414ON_BOOL32 ON_IsContinuous(
1422 double point_tolerance=ON_ZERO_TOLERANCE,
1423 double d1_tolerance=ON_ZERO_TOLERANCE,
1424 double d2_tolerance=ON_ZERO_TOLERANCE,
1425 double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE,
1426 double curvature_tolerance=ON_SQRT_EPSILON
1431bool ON_TuneupEvaluationParameter(
1433 double s0,
double s1,
1448const ON_2dex* ON_BinarySearch2dexArray(
1644int ON_ArePointsOnLine(
1657int ON_ArePointsOnPlane(
1693bool ON_EvaluateQuotientRule(
1725bool ON_EvaluateQuotientRule2(
1761bool ON_EvaluateQuotientRule3(
1769bool ON_GetPolylineLength(
1793bool ON_GetClosestPointInPointList(
1797 int* closest_point_index
1843double ON_TestMathFunction(
1851ON_DECL
double ON_Max(
double a,
double b);
1855ON_DECL
float ON_Max(
float a,
float b);
1859ON_DECL
int ON_Max(
int a,
int b);
1863ON_DECL
double ON_Min(
double a,
double b);
1867ON_DECL
float ON_Min(
float a,
float b);
1871ON_DECL
int ON_Min(
int a,
int b);
1877ON_DECL
int ON_Round(
double x);
1913ON_DECL
bool ON_GetConicEquationThrough6Points(
1915 const double* points2d,
1943ON_DECL
bool ON_IsConicEquationAnEllipse(
1944 const double conic[6],
1948 double* major_radius,
1949 double* minor_radius
1993ON_DECL
bool ON_GetEllipseConicEquation(
1995 double x0,
double y0,
2006ON_DECL
double ON_Length2d(
double x,
double y );
2014ON_DECL
double ON_Length3d(
double x,
double y,
double z );
2027ON_DECL
float ON_FloatFloor(
double x);
2039ON_DECL
float ON_FloatCeil(
double x);
bool Periodic(int parameter_index) const
ON_SimpleArray< bool > m_bPeriodicParameter
virtual int EvaluateHessian(const double *parameters, double *value, double *gradient, double **hessian)
virtual int Evaluate(const double *parameters, double *values, double **jacobian)=0
ON_Interval Domain(int parameter_index) const
ON_SimpleArray< ON_Interval > m_domain
const int m_parameter_count
ON_Evaluator(int parameter_count, int value_count, const ON_Interval *domain, const bool *periodic)
bool FiniteDomain() const
void operator-=(double x)
void operator+=(double x)
void Begin(double starting_value=0.0)
double Total(double *error_estimate=NULL)