Geant4 11.2.2
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
74
75typedef
79 int64_t index; /* For overflowHeader set to -1. */
82
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)
double ptwXY_getAccuracy(ptwXYPoints *ptwXY)
ptwXY_interpolation ptwXY_getInterpolation(ptwXYPoints *ptwXY)
double ptwXY_setAccuracy(ptwXYPoints *ptwXY, double accuracy)
ptwXYPoints * ptwXY_xSlice(ptwXYPoints *ptwXY, double xMin, double xMax, int64_t secondarySize, int fill, nfu_status *status)
void ptwXY_simpleWrite(ptwXYPoints *ptwXY, FILE *f, char *format)
int ptwXY_getUserFlag(ptwXYPoints *ptwXY)
nfu_status ptwXY_setValueAtX(ptwXYPoints *ptwXY, double x, double y)
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)
ptwXYPoints * ptwXY_thin(ptwXYPoints *ptwXY1, double accuracy, nfu_status *status)
enum ptwXY_lessEqualGreaterX_e ptwXY_lessEqualGreaterX
double ptwXY_getYMax(ptwXYPoints *ptwXY)
void ptwXY_showInteralStructure(ptwXYPoints *ptwXY, FILE *f, int printPointersAsNull)
nfu_status ptwXY_reallocateOverflowPoints(ptwXYPoints *ptwXY, int64_t size)
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)
nfu_status ptwXY_setXYPairAtIndex(ptwXYPoints *ptwXY, int64_t index, double x, double y)
void ptwXY_setUserFlag(ptwXYPoints *ptwXY, int userFlag)
nfu_status ptwXY_reallocatePoints(ptwXYPoints *ptwXY, int64_t size, int forceSmallerResize)
nfu_status ptwXY_setXYData(ptwXYPoints *ptwXY, int64_t length, double const *xy)
nfu_status ptwXY_simpleCoalescePoints(ptwXYPoints *ptwXY)
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)
nfu_status ptwXY_mergeFromXYs(ptwXYPoints *ptwXY, int length, double *xys)
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)
nfu_status ptwXY_coalescePoints(ptwXYPoints *ptwXY, int64_t size, ptwXYPoint *newPoint, int forceSmallerResize)
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)
nfu_status ptwXY_mergeFromXsAndYs(ptwXYPoints *ptwXY, int length, double *xs, double *ys)
nfu_status ptwXY_getValueAtX(ptwXYPoints *ptwXY, double x, double *y)
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)
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)
char const * ptwXY_getInterpolationString(ptwXYPoints *ptwXY)
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)
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)
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)
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)
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)
ptwXYPoints * ptwXY_fromString(char const *str, ptwXY_interpolation interpolation, ptwXY_interpolationOtherInfo const *interpolationOtherInfo, double biSectionMax, double accuracy, char **endCharacter, nfu_status *status)
nfu_status ptwXY_appendXY(ptwXYPoints *ptwXY, double x, double y)
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)
nfu_status ptwXY_mod(ptwXYPoints *ptwXY, double m, int pythonMod)
nfu_status ptwXY_exp(ptwXYPoints *ptwXY, double a)
nfu_status ptwXY_clear(ptwXYPoints *ptwXY)
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX(ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint)
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)
nfu_status ptwXY_getXYPairAtIndex(ptwXYPoints *ptwXY, int64_t index, double *x, double *y)
double ptwXY_getXMin(ptwXYPoints *ptwXY)
nfu_status ptwXY_getSlopeAtX(ptwXYPoints *ptwXY, double x, const char side, double *slope)
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)
ptwXYPoints * ptwXY_cloneToInterpolation(ptwXYPoints *ptwXY, ptwXY_interpolation interpolationTo, nfu_status *status)
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
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)
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)
nfu_status ptwXY_applyFunction(ptwXYPoints *ptwXY1, ptwXY_applyFunction_callback func, void *argList, int checkForRoots)
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)
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)
double ptwXY_setBiSectionMax(ptwXYPoints *ptwXY, double biSectionMax)
double ptwXY_integrateDomain(ptwXYPoints *ptwXY, nfu_status *status)
double ptwXY_getXMax(ptwXYPoints *ptwXY)
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)
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)
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
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