Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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)
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