Geant4-11
ptwXY.h
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# <<END-copyright>>
4*/
5
6#ifndef ptwXY_h_included
7#define ptwXY_h_included
8
9#include <stdio.h>
10#include <stdint.h>
11
12#include <nf_utilities.h>
13#include <ptwX.h>
14
15#if defined __cplusplus
16 extern "C" {
17 namespace GIDI {
18#endif
19
20#define ptwXY_minimumSize 10 /* This must be > 0 otherwise some logic will fail. */
21#define ptwXY_minimumOverflowSize 4 /* This must be > 0 otherwise some logic will fail. */
22#define ptwXY_maxBiSectionMax 20
23#define ptwXY_minAccuracy 1e-14
24#define ptwXY_sectionSubdivideMax 1 << 16
25#define ClosestAllowXFactor 10
26
29
30/* The next macro are used in the routine ptwXY_union. */
31#define ptwXY_union_fill 1 /* If filling, union is filled with y value of first ptw. */
32#define ptwXY_union_trim 2 /* If trimming, union in only over common domain of ptw1 and ptw2. */
33#define ptwXY_union_mergeClosePoints 4 /* If true, union calls ptwXY_mergeClosePoints with eps = 4 * DBL_EPSILON. */
37
38/*
39* The function ptwXY_getPointsAroundX determines where an x fits into a ptwXY instance. It returns/sets the following.
40*
41* if ( some point's x == x )
42* lessThanEqualXPoint is set to point's information (prior, next, index, x, y),
43* greaterThanXPoint is set to a overflowHeader,
44* return( ptwXY_lessEqualGreaterX_equal ).
45* else if ( x < first point's x )
46* lessThanEqualXPoint is set to overflowHeader,
47* greaterThanXPoint is set to first point's information,
48* and greaterThanXPoint.prior points to the overflow which will be before the new point when the new point is inserted into overflowPoints.
49* else if ( x > last point's x )
50* lessThanEqualXPoint is set to last point's information
51* greaterThanXPoint is set to a overflowHeader point
52* and lessThanEqualXPoint.prior points to the overflow which will be before new point when the new point is inserted into overflowPoints.
53* else
54* lessThanEqualXPoint is set to point's information for closes point with point's x <= x
55* greaterThanXPoint is set to point's information for closes point with point's x > x
56*/
59
60typedef
61 struct ptwXYPoint_s {
62 double x, y;
64
65typedef nfu_status (*ptwXY_createFromFunction_callback)( double x, double *y, void *argList );
66typedef nfu_status (*ptwXY_applyFunction_callback)( ptwXYPoint *point, void *argList );
67typedef nfu_status (*ptwXY_getValue_callback)( void *argList, double x, double *y, double x1, double y1, double x2, double y2 );
68
69typedef struct {
72 void *argList;
74
75typedef
79 int64_t index; /* For overflowHeader set to -1. */
82
83typedef
84 struct ptwXYPoints_s {
91 double accuracy;
93 int64_t length;
102
103/*
104* Routines in ptwXY_core.c
105*/
106ptwXYPoints *ptwXY_new( ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax,
107 double accuracy, int64_t primarySize, int64_t secondarySize, nfu_status *status, int userFlag );
108nfu_status ptwXY_setup( ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo,
109 double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int userFlag );
110ptwXYPoints *ptwXY_create( ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo,
111 double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy,
112 nfu_status *status, int userFlag );
113ptwXYPoints *ptwXY_createFrom_Xs_Ys( ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo,
114 double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *Xs,
115 double const *Ys, nfu_status *status, int userFlag );
116
120ptwXYPoints *ptwXY_slice( ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t secondarySize, nfu_status *status );
121ptwXYPoints *ptwXY_xSlice( ptwXYPoints *ptwXY, double xMin, double xMax, int64_t secondarySize, int fill, nfu_status *status );
122ptwXYPoints *ptwXY_xMinSlice( ptwXYPoints *ptwXY, double xMin, int64_t secondarySize, int fill, nfu_status *status );
123ptwXYPoints *ptwXY_xMaxSlice( ptwXYPoints *ptwXY, double xMax, int64_t secondarySize, int fill, nfu_status *status );
124
126char const *ptwXY_getInterpolationString( ptwXYPoints *ptwXY );
128int ptwXY_getUserFlag( ptwXYPoints *ptwXY );
129void ptwXY_setUserFlag( ptwXYPoints *ptwXY, int userFlag );
130double ptwXY_getAccuracy( ptwXYPoints *ptwXY );
131double ptwXY_setAccuracy( ptwXYPoints *ptwXY, double accuracy );
132double ptwXY_getBiSectionMax( ptwXYPoints *ptwXY );
133double ptwXY_setBiSectionMax( ptwXYPoints *ptwXY, double biSectionMax );
134
135nfu_status ptwXY_reallocatePoints( ptwXYPoints *ptwXY, int64_t size, int forceSmallerResize );
137nfu_status ptwXY_coalescePoints( ptwXYPoints *ptwXY, int64_t size, ptwXYPoint *newPoint, int forceSmallerResize );
139
143
144int64_t ptwXY_length( ptwXYPoints *ptwXY );
145int64_t ptwXY_getNonOverflowLength( ptwXYPoints const *ptwXY );
146
147nfu_status ptwXY_setXYData( ptwXYPoints *ptwXY, int64_t length, double const *xy );
148nfu_status ptwXY_setXYDataFromXsAndYs( ptwXYPoints *ptwXY, int64_t length, double const *x, double const *y );
149nfu_status ptwXY_deletePoints( ptwXYPoints *ptwXY, int64_t i1, int64_t i2 );
150ptwXYPoint *ptwXY_getPointAtIndex( ptwXYPoints *ptwXY, int64_t index );
152nfu_status ptwXY_getXYPairAtIndex( ptwXYPoints *ptwXY, int64_t index, double *x, double *y );
153ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX( ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint );
155 ptwXYOverflowPoint *greaterThanXPoint, double eps, int *closeIsEqual, ptwXYPoint **closePoint );
156nfu_status ptwXY_getValueAtX( ptwXYPoints *ptwXY, double x, double *y );
157nfu_status ptwXY_setValueAtX( ptwXYPoints *ptwXY, double x, double y );
158nfu_status ptwXY_setValueAtX_overrideIfClose( ptwXYPoints *ptwXY, double x, double y, double eps, int override );
159nfu_status ptwXY_mergeFromXsAndYs( ptwXYPoints *ptwXY, int length, double *xs, double *ys );
160nfu_status ptwXY_mergeFromXYs( ptwXYPoints *ptwXY, int length, double *xys );
161nfu_status ptwXY_appendXY( ptwXYPoints *ptwXY, double x, double y );
162nfu_status ptwXY_setXYPairAtIndex( ptwXYPoints *ptwXY, int64_t index, double x, double y );
163
164nfu_status ptwXY_getSlopeAtX( ptwXYPoints *ptwXY, double x, const char side, double *slope );
165
166double ptwXY_getXMinAndFrom( ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom );
167double ptwXY_getXMin( ptwXYPoints *ptwXY );
168double ptwXY_getXMaxAndFrom( ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom );
169double ptwXY_getXMax( ptwXYPoints *ptwXY );
170double ptwXY_getYMin( ptwXYPoints *ptwXY );
171double ptwXY_getYMax( ptwXYPoints *ptwXY );
172
173/*
174* Methods in ptwXY_methods.c
175*/
176nfu_status ptwXY_clip( ptwXYPoints *ptwXY1, double yMin, double yMax );
177nfu_status ptwXY_thicken( ptwXYPoints *ptwXY1, int sectionSubdivideMax, double dxMax, double fxMax );
178ptwXYPoints *ptwXY_thin( ptwXYPoints *ptwXY1, double accuracy, nfu_status *status );
180
181ptwXYPoints *ptwXY_union( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int unionOptions );
182
183nfu_status ptwXY_scaleOffsetXAndY( ptwXYPoints *ptwXY, double xScale, double xOffset, double yScale, double yOffset );
184
185/*
186* Functions in ptwXY_unitaryOperators.c
187*/
190
191/*
192* Functions in ptwXY_binaryOperators.c
193*/
194nfu_status ptwXY_slopeOffset( ptwXYPoints *ptwXY, double slope, double offset );
195nfu_status ptwXY_add_double( ptwXYPoints *ptwXY, double value );
196nfu_status ptwXY_sub_doubleFrom( ptwXYPoints *ptwXY, double value );
197nfu_status ptwXY_sub_fromDouble( ptwXYPoints *ptwXY, double value );
198nfu_status ptwXY_mul_double( ptwXYPoints *ptwXY, double value );
199nfu_status ptwXY_div_doubleFrom( ptwXYPoints *ptwXY, double value );
200nfu_status ptwXY_div_fromDouble( ptwXYPoints *ptwXY, double value );
201nfu_status ptwXY_mod( ptwXYPoints *ptwXY, double m, int pythonMod );
202
203ptwXYPoints *ptwXY_binary_ptwXY( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, double v1, double v2, double v1v2, nfu_status *status );
204ptwXYPoints *ptwXY_add_ptwXY( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status );
205ptwXYPoints *ptwXY_sub_ptwXY( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status );
206ptwXYPoints *ptwXY_mul_ptwXY( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status );
208ptwXYPoints *ptwXY_div_ptwXY( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int safeDivide );
209
210/*
211* Functions in ptwXY_functions.c
212*/
213nfu_status ptwXY_pow( ptwXYPoints *ptwXY, double p );
214nfu_status ptwXY_exp( ptwXYPoints *ptwXY, double a );
215ptwXYPoints *ptwXY_convolution( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int mode );
216
217/*
218* Functions in ptwXY_interpolation.c
219*/
220nfu_status ptwXY_interpolatePoint( ptwXY_interpolation interpolation, double x, double *y, double x1, double y1, double x2, double y2 );
221ptwXYPoints *ptwXY_flatInterpolationToLinear( ptwXYPoints *ptwXY, double lowerEps, double upperEps, nfu_status *status );
222ptwXYPoints *ptwXY_toOtherInterpolation( ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, double accuracy, nfu_status *status );
223ptwXYPoints *ptwXY_unitbaseInterpolate( double w, double w1, ptwXYPoints *ptwXY1, double w2, ptwXYPoints *ptwXY2, nfu_status *status );
225ptwXYPoints *ptwXY_fromUnitbase( ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status );
226
227/*
228* Functions in ptwXY_convenient.c
229*/
231nfu_status ptwXY_dullEdges( ptwXYPoints *ptwXY, double lowerEps, double upperEps, int positiveXOnly );
235nfu_status ptwXY_tweakDomainsToMutualify( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int epsilonFactor, double epsilon );
236nfu_status ptwXY_mutualifyDomains( ptwXYPoints *ptwXY1, double lowerEps1, double upperEps1, int positiveXOnly1,
237 ptwXYPoints *ptwXY2, double lowerEps2, double upperEps2, int positiveXOnly2 );
238nfu_status ptwXY_copyToC_XY( ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t allocatedSize, int64_t *numberOfPoints, double *xy );
239nfu_status ptwXY_valueTo_ptwXAndY( ptwXYPoints *ptwXY, double **xs, double **ys );
240ptwXYPoints *ptwXY_valueTo_ptwXY( double x1, double x2, double y, nfu_status *status );
242ptwXYPoints *ptwXY_createGaussian( double accuracy, double xCenter, double sigma, double amplitude, double xMin, double xMax,
243 double dullEps, nfu_status *status );
244
245/*
246* Functions in ptwXY_misc.c
247*/
248void ptwXY_update_biSectionMax( ptwXYPoints *ptwXY1, double oldLength );
249ptwXYPoints *ptwXY_createFromFunction( int n, double *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots,
250 int biSectionMax, nfu_status *status );
251ptwXYPoints *ptwXY_createFromFunction2( ptwXPoints *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots,
252 int biSectionMax, nfu_status *status );
253nfu_status ptwXY_applyFunction( ptwXYPoints *ptwXY1, ptwXY_applyFunction_callback func, void *argList, int checkForRoots );
254ptwXYPoints *ptwXY_fromString( char const *str, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo,
255 double biSectionMax, double accuracy, char **endCharacter, nfu_status *status );
256
257void ptwXY_showInteralStructure( ptwXYPoints *ptwXY, FILE *f, int printPointersAsNull );
258void ptwXY_simpleWrite( ptwXYPoints *ptwXY, FILE *f, char *format );
259void ptwXY_simplePrint( ptwXYPoints *ptwXY, char *format );
260
261/*
262* Functions in ptwXY_integration.c
263*/
264nfu_status ptwXY_f_integrate( ptwXY_interpolation interpolation, double x1, double y1, double x2, double y2, double *value );
265double ptwXY_integrate( ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status );
266double ptwXY_integrateDomain( ptwXYPoints *ptwXY, nfu_status *status );
269double ptwXY_integrateWithWeight_x( ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status );
271double ptwXY_integrateWithWeight_sqrt_x( ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status );
272ptwXPoints *ptwXY_groupOneFunction( ptwXYPoints *ptwXY, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status );
273ptwXPoints *ptwXY_groupTwoFunctions( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXPoints *groupBoundaries, ptwXY_group_normType normType,
274 ptwXPoints *ptwX_norm, nfu_status *status );
275ptwXPoints *ptwXY_groupThreeFunctions( ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXYPoints *ptwXY3, ptwXPoints *groupBoundaries,
276 ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status );
279 double xMin, double xMax, int degree, int recursionLimit, double tolerance, nfu_status *status );
280
281#if defined __cplusplus
282 }
283 }
284#endif
285
286#endif /* End of ptwXY_h_included. */
G4double epsilon(G4double density, G4double temperature)
static const G4double eps
static constexpr double m
Definition: G4SIunits.hh:109
static constexpr double degree
Definition: G4SIunits.hh:124
enum nfu_status_e nfu_status
ptwXPoints * ptwXY_groupOneFunction(ptwXYPoints *ptwXY, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status)
ptwXYPoints * ptwXY_binary_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, double v1, double v2, double v1v2, nfu_status *status)
ptwXPoints * ptwXY_groupThreeFunctions(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXYPoints *ptwXY3, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status)
nfu_status ptwXY_copy(ptwXYPoints *dest, ptwXYPoints *src)
Definition: ptwXY_core.cc:148
double ptwXY_getAccuracy(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:372
ptwXY_interpolation ptwXY_getInterpolation(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:337
double ptwXY_setAccuracy(ptwXYPoints *ptwXY, double accuracy)
Definition: ptwXY_core.cc:379
ptwXYPoints * ptwXY_xSlice(ptwXYPoints *ptwXY, double xMin, double xMax, int64_t secondarySize, int fill, nfu_status *status)
Definition: ptwXY_core.cc:274
void ptwXY_simpleWrite(ptwXYPoints *ptwXY, FILE *f, char *format)
Definition: ptwXY_misc.cc:285
int ptwXY_getUserFlag(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:358
nfu_status ptwXY_setValueAtX(ptwXYPoints *ptwXY, double x, double y)
Definition: ptwXY_core.cc:876
ptwXYPoints * ptwXY_convolution(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int mode)
ptwXYPoints * ptwXY_toUnitbase(ptwXYPoints *ptwXY, nfu_status *status)
enum ptwXY_group_normType_e ptwXY_group_normType
ptwXYPoints * ptwXY_xMaxSlice(ptwXYPoints *ptwXY, double xMax, int64_t secondarySize, int fill, nfu_status *status)
Definition: ptwXY_core.cc:326
ptwXYPoints * ptwXY_thin(ptwXYPoints *ptwXY1, double accuracy, nfu_status *status)
enum ptwXY_lessEqualGreaterX_e ptwXY_lessEqualGreaterX
double ptwXY_getYMax(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:1269
void ptwXY_showInteralStructure(ptwXYPoints *ptwXY, FILE *f, int printPointersAsNull)
Definition: ptwXY_misc.cc:253
nfu_status ptwXY_reallocateOverflowPoints(ptwXYPoints *ptwXY, int64_t size)
Definition: ptwXY_core.cc:439
ptwXYPoints * ptwXY_union(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int unionOptions)
enum ptwXY_dataFrom_e ptwXY_dataFrom
ptwXYPoints * ptwXY_unitbaseInterpolate(double w, double w1, ptwXYPoints *ptwXY1, double w2, ptwXYPoints *ptwXY2, nfu_status *status)
nfu_status ptwXY_scaleOffsetXAndY(ptwXYPoints *ptwXY, double xScale, double xOffset, double yScale, double yOffset)
ptwXY_group_normType_e
Definition: ptwXY.h:28
@ ptwXY_group_normType_dx
Definition: ptwXY.h:28
@ ptwXY_group_normType_none
Definition: ptwXY.h:28
@ ptwXY_group_normType_norm
Definition: ptwXY.h:28
ptwXYPoints * ptwXY_mul_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
nfu_status ptwXY_sub_fromDouble(ptwXYPoints *ptwXY, double value)
nfu_status ptwXY_deletePoints(ptwXYPoints *ptwXY, int64_t i1, int64_t i2)
Definition: ptwXY_core.cc:660
nfu_status ptwXY_setXYPairAtIndex(ptwXYPoints *ptwXY, int64_t index, double x, double y)
Definition: ptwXY_core.cc:1098
void ptwXY_setUserFlag(ptwXYPoints *ptwXY, int userFlag)
Definition: ptwXY_core.cc:365
nfu_status ptwXY_reallocatePoints(ptwXYPoints *ptwXY, int64_t size, int forceSmallerResize)
Definition: ptwXY_core.cc:410
nfu_status ptwXY_setXYData(ptwXYPoints *ptwXY, int64_t length, double const *xy)
Definition: ptwXY_core.cc:597
nfu_status ptwXY_simpleCoalescePoints(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:529
nfu_status ptwXY_mutualifyDomains(ptwXYPoints *ptwXY1, double lowerEps1, double upperEps1, int positiveXOnly1, ptwXYPoints *ptwXY2, double lowerEps2, double upperEps2, int positiveXOnly2)
ptwXYPoint * ptwXY_getPointAtIndex_Unsafely(ptwXYPoints *ptwXY, int64_t index)
Definition: ptwXY_core.cc:684
nfu_status ptwXY_mergeFromXYs(ptwXYPoints *ptwXY, int length, double *xys)
Definition: ptwXY_core.cc:973
struct ptwXYOverflowPoint_s ptwXYOverflowPoint
nfu_status ptwXY_dullEdges(ptwXYPoints *ptwXY, double lowerEps, double upperEps, int positiveXOnly)
ptwXYPoints * ptwXY_xMinSlice(ptwXYPoints *ptwXY, double xMin, int64_t secondarySize, int fill, nfu_status *status)
Definition: ptwXY_core.cc:315
nfu_status ptwXY_coalescePoints(ptwXYPoints *ptwXY, int64_t size, ptwXYPoint *newPoint, int forceSmallerResize)
Definition: ptwXY_core.cc:469
nfu_status ptwXY_trim(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_new(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, nfu_status *status, int userFlag)
Definition: ptwXY_core.cc:29
int64_t ptwXY_getNonOverflowLength(ptwXYPoints const *ptwXY)
Definition: ptwXY_core.cc:590
nfu_status ptwXY_mergeFromXsAndYs(ptwXYPoints *ptwXY, int length, double *xs, double *ys)
Definition: ptwXY_core.cc:966
nfu_status ptwXY_getValueAtX(ptwXYPoints *ptwXY, double x, double *y)
Definition: ptwXY_core.cc:844
ptwXYPoints * ptwXY_createGaussian(double accuracy, double xCenter, double sigma, double amplitude, double xMin, double xMax, double dullEps, nfu_status *status)
nfu_status ptwXY_tweakDomainsToMutualify(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int epsilonFactor, double epsilon)
ptwXYPoints * ptwXY_intersectionWith_ptwX(ptwXYPoints *ptwXY, ptwXPoints *ptwX, nfu_status *status)
nfu_status ptwXY_setValueAtX_overrideIfClose(ptwXYPoints *ptwXY, double x, double y, double eps, int override)
Definition: ptwXY_core.cc:883
nfu_status ptwXY_mergeClosePoints(ptwXYPoints *ptwXY, double epsilon)
enum ptwXY_interpolation_e ptwXY_interpolation
nfu_status ptwXY_areDomainsMutual(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
ptwXPoints * ptwXY_getXArray(ptwXYPoints *ptwXY, nfu_status *status)
ptwXYPoints * ptwXY_slice(ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t secondarySize, nfu_status *status)
Definition: ptwXY_core.cc:248
char const * ptwXY_getInterpolationString(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:344
ptwXY_interpolation_e
Definition: ptwXY.h:35
@ ptwXY_interpolationFlat
Definition: ptwXY.h:36
@ ptwXY_interpolationLinLog
Definition: ptwXY.h:35
@ ptwXY_interpolationLogLog
Definition: ptwXY.h:35
@ ptwXY_interpolationLinLin
Definition: ptwXY.h:35
@ ptwXY_interpolationOther
Definition: ptwXY.h:36
@ ptwXY_interpolationLogLin
Definition: ptwXY.h:35
int64_t ptwXY_length(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:583
struct ptwXYPoints_s ptwXYPoints
double ptwXY_integrateDomainWithWeight_sqrt_x(ptwXYPoints *ptwXY, nfu_status *status)
ptwXYPoints * ptwXY_div_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status, int safeDivide)
ptwXYPoints * ptwXY_createFromFunction(int n, double *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax, nfu_status *status)
Definition: ptwXY_misc.cc:40
nfu_status ptwXY_add_double(ptwXYPoints *ptwXY, double value)
nfu_status ptwXY_div_doubleFrom(ptwXYPoints *ptwXY, double value)
ptwXPoints * ptwXY_runningIntegral(ptwXYPoints *ptwXY, nfu_status *status)
ptwXYPoints * ptwXY_mul2_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
nfu_status ptwXY_copyToC_XY(ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t allocatedSize, int64_t *numberOfPoints, double *xy)
nfu_status ptwXY_normalize(ptwXYPoints *ptwXY1)
double ptwXY_integrateWithWeight_x(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
double ptwXY_getBiSectionMax(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:390
enum ptwXY_sigma_e ptwXY_sigma
ptwXYPoints * ptwXY_valueTo_ptwXY(double x1, double x2, double y, nfu_status *status)
nfu_status(* ptwXY_applyFunction_callback)(ptwXYPoint *point, void *argList)
Definition: ptwXY.h:66
ptwXY_lessEqualGreaterX_e
Definition: ptwXY.h:57
@ ptwXY_lessEqualGreaterX_equal
Definition: ptwXY.h:57
@ ptwXY_lessEqualGreaterX_empty
Definition: ptwXY.h:57
@ ptwXY_lessEqualGreaterX_between
Definition: ptwXY.h:58
@ ptwXY_lessEqualGreaterX_lessThan
Definition: ptwXY.h:57
@ ptwXY_lessEqualGreaterX_greater
Definition: ptwXY.h:58
nfu_status ptwXY_getStatus(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:351
void ptwXY_update_biSectionMax(ptwXYPoints *ptwXY1, double oldLength)
Definition: ptwXY_misc.cc:31
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX_closeIsEqual(ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint, double eps, int *closeIsEqual, ptwXYPoint **closePoint)
Definition: ptwXY_core.cc:720
ptwXYPoints * ptwXY_create(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy, nfu_status *status, int userFlag)
Definition: ptwXY_core.cc:108
ptwXYPoints * ptwXY_fromString(char const *str, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, char **endCharacter, nfu_status *status)
Definition: ptwXY_misc.cc:236
nfu_status ptwXY_appendXY(ptwXYPoints *ptwXY, double x, double y)
Definition: ptwXY_core.cc:1062
nfu_status ptwXY_pow(ptwXYPoints *ptwXY, double p)
nfu_status(* ptwXY_getValue_callback)(void *argList, double x, double *y, double x1, double y1, double x2, double y2)
Definition: ptwXY.h:67
nfu_status ptwXY_setXYDataFromXsAndYs(ptwXYPoints *ptwXY, int64_t length, double const *x, double const *y)
Definition: ptwXY_core.cc:631
nfu_status ptwXY_mod(ptwXYPoints *ptwXY, double m, int pythonMod)
nfu_status ptwXY_exp(ptwXYPoints *ptwXY, double a)
nfu_status ptwXY_clear(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:536
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX(ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint)
Definition: ptwXY_core.cc:710
nfu_status ptwXY_slopeOffset(ptwXYPoints *ptwXY, double slope, double offset)
ptwXYPoints * ptwXY_fromUnitbase(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
ptwXYPoint * ptwXY_getPointAtIndex(ptwXYPoints *ptwXY, int64_t index)
Definition: ptwXY_core.cc:675
nfu_status ptwXY_getXYPairAtIndex(ptwXYPoints *ptwXY, int64_t index, double *x, double *y)
Definition: ptwXY_core.cc:698
double ptwXY_getXMin(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:1206
nfu_status ptwXY_getSlopeAtX(ptwXYPoints *ptwXY, double x, const char side, double *slope)
Definition: ptwXY_core.cc:1139
ptwXPoints * ptwXY_groupTwoFunctions(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm, nfu_status *status)
struct ptwXYPoint_s ptwXYPoint
void ptwXY_simplePrint(ptwXYPoints *ptwXY, char *format)
Definition: ptwXY_misc.cc:298
ptwXYPoints * ptwXY_cloneToInterpolation(ptwXYPoints *ptwXY, ptwXY_interpolation interpolationTo, nfu_status *status)
Definition: ptwXY_core.cc:215
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:574
ptwXYPoints * ptwXY_flatInterpolationToLinear(ptwXYPoints *ptwXY, double lowerEps, double upperEps, nfu_status *status)
nfu_status ptwXY_div_fromDouble(ptwXYPoints *ptwXY, double value)
ptwXY_dataFrom_e
Definition: ptwXY.h:27
@ ptwXY_dataFrom_Overflow
Definition: ptwXY.h:27
@ ptwXY_dataFrom_Points
Definition: ptwXY.h:27
@ ptwXY_dataFrom_Unknown
Definition: ptwXY.h:27
double ptwXY_getXMaxAndFrom(ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom)
Definition: ptwXY_core.cc:1215
ptwXYPoints * ptwXY_createFrom_Xs_Ys(ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *Xs, double const *Ys, nfu_status *status, int userFlag)
Definition: ptwXY_core.cc:126
nfu_status ptwXY_applyFunction(ptwXYPoints *ptwXY1, ptwXY_applyFunction_callback func, void *argList, int checkForRoots)
Definition: ptwXY_misc.cc:146
ptwXYPoints * ptwXY_createFromFunction2(ptwXPoints *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax, nfu_status *status)
Definition: ptwXY_misc.cc:89
double ptwXY_integrateWithWeight_sqrt_x(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
nfu_status ptwXY_neg(ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_add_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
nfu_status ptwXY_mul_double(ptwXYPoints *ptwXY, double value)
ptwXY_sigma_e
Definition: ptwXY.h:34
@ ptwXY_sigma_plusMinus
Definition: ptwXY.h:34
@ ptwXY_sigma_none
Definition: ptwXY.h:34
@ ptwXY_sigma_plus
Definition: ptwXY.h:34
@ ptwXY_sigma_Minus
Definition: ptwXY.h:34
ptwXYPoints * ptwXY_clone(ptwXYPoints *ptwXY, nfu_status *status)
Definition: ptwXY_core.cc:208
double ptwXY_integrate(ptwXYPoints *ptwXY, double xMin, double xMax, nfu_status *status)
nfu_status ptwXY_thicken(ptwXYPoints *ptwXY1, int sectionSubdivideMax, double dxMax, double fxMax)
nfu_status ptwXY_release(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:549
double ptwXY_setBiSectionMax(ptwXYPoints *ptwXY, double biSectionMax)
Definition: ptwXY_core.cc:397
double ptwXY_integrateDomain(ptwXYPoints *ptwXY, nfu_status *status)
double ptwXY_getXMax(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:1239
nfu_status(* ptwXY_createFromFunction_callback)(double x, double *y, void *argList)
Definition: ptwXY.h:65
nfu_status ptwXY_abs(ptwXYPoints *ptwXY)
nfu_status ptwXY_interpolatePoint(ptwXY_interpolation interpolation, double x, double *y, double x1, double y1, double x2, double y2)
double ptwXY_getYMin(ptwXYPoints *ptwXY)
Definition: ptwXY_core.cc:1248
nfu_status ptwXY_clip(ptwXYPoints *ptwXY1, double yMin, double yMax)
nfu_status ptwXY_valueTo_ptwXAndY(ptwXYPoints *ptwXY, double **xs, double **ys)
double ptwXY_integrateDomainWithWeight_x(ptwXYPoints *ptwXY, nfu_status *status)
ptwXYPoints * ptwXY_createGaussianCenteredSigma1(double accuracy, nfu_status *status)
ptwXYPoints * ptwXY_sub_ptwXY(ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, nfu_status *status)
nfu_status ptwXY_sub_doubleFrom(ptwXYPoints *ptwXY, double value)
double ptwXY_getXMinAndFrom(ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom)
Definition: ptwXY_core.cc:1182
nfu_status ptwXY_f_integrate(ptwXY_interpolation interpolation, double x1, double y1, double x2, double y2, double *value)
ptwXYPoints * ptwXY_toOtherInterpolation(ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, double accuracy, nfu_status *status)
double ptwXY_integrateWithFunction(ptwXYPoints *ptwXY, ptwXY_createFromFunction_callback func, void *argList, double xMin, double xMax, int degree, int recursionLimit, double tolerance, nfu_status *status)
nfu_status ptwXY_setup(ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int userFlag)
Definition: ptwXY_core.cc:46
struct ptwXYOverflowPoint_s * next
Definition: ptwXY.h:78
int64_t index
Definition: ptwXY.h:79
struct ptwXYOverflowPoint_s * prior
Definition: ptwXY.h:77
ptwXYPoint point
Definition: ptwXY.h:80
double x
Definition: ptwXY.h:62
double minFractional_dx
Definition: ptwXY.h:92
ptwXYOverflowPoint overflowHeader
Definition: ptwXY.h:98
int userFlag
Definition: ptwXY.h:89
ptwXYPoint * points
Definition: ptwXY.h:99
ptwXY_interpolation interpolation
Definition: ptwXY.h:87
ptwXY_sigma typeX
Definition: ptwXY.h:86
double biSectionMax
Definition: ptwXY.h:90
double accuracy
Definition: ptwXY.h:91
int64_t length
Definition: ptwXY.h:93
ptwXY_interpolationOtherInfo interpolationOtherInfo
Definition: ptwXY.h:88
int64_t overflowLength
Definition: ptwXY.h:95
int64_t overflowAllocatedSize
Definition: ptwXY.h:96
nfu_status status
Definition: ptwXY.h:85
ptwXYOverflowPoint * overflowPoints
Definition: ptwXY.h:100
int64_t mallocFailedSize
Definition: ptwXY.h:97
int64_t allocatedSize
Definition: ptwXY.h:94
char const * interpolationString
Definition: ptwXY.h:70
ptwXY_getValue_callback getValueFunc
Definition: ptwXY.h:71