MathgeomGLS
950 строк · 32.0 Кб
1{ These declarations need to be in the "interface" section of this unit for
2Delphi's inlining to work }
3
4{$IF Defined(FM_ARM)}
5const
6{$IF Defined(IOS)}
7{ @exclude }
8_LIB_FASTMATH = 'libfastmath-ios.a';
9{ @exclude }
10_PREFIX = '';
11{$ELSEIF Defined(ANDROID64)}
12{ @exclude }
13_LIB_FASTMATH = 'libfastmath-android-64.a';
14_PREFIX = '_';
15{$ELSEIF Defined(ANDROID)}
16{$IF (RTLVersion = 33)}
17{ Delphi 10.3 uses Thumb mode. }
18{ @exclude }
19_LIB_FASTMATH = 'libfastmath-android-32.a';
20{$ELSE}
21{ Delphi 10.2 and earlier and Delphi 10.4 and later use ARM mode. }
22{ @exclude }
23_LIB_FASTMATH = 'libfastmath-android-arm.a';
24{$ENDIF}
25{ @exclude }
26_PREFIX = '_';
27{$ELSE}
28{$MESSAGE Error 'Unsupported ARM platform for FaseMath'}
29{$ENDIF}
30
31{ @exclude }
32function _radians_scalar(ADegrees: Single): Single;
33cdecl; external _LIB_FASTMATH name _PREFIX + 'radians_scalar';
34
35{ @exclude }
36procedure _radians_vector2(ADegrees, AResult: Pointer);
37cdecl; external _LIB_FASTMATH name _PREFIX + 'radians_vector2';
38
39{ @exclude }
40procedure _radians_vector3(ADegrees, AResult: Pointer);
41cdecl; external _LIB_FASTMATH name _PREFIX + 'radians_vector3';
42
43{ @exclude }
44procedure _radians_vector4(ADegrees, AResult: Pointer);
45cdecl; external _LIB_FASTMATH name _PREFIX + 'radians_vector4';
46
47{ @exclude }
48function _degrees_scalar(ADegrees: Single): Single;
49cdecl; external _LIB_FASTMATH name _PREFIX + 'degrees_scalar';
50
51{ @exclude }
52procedure _degrees_vector2(ARadians, AResult: Pointer);
53cdecl; external _LIB_FASTMATH name _PREFIX + 'degrees_vector2';
54
55{ @exclude }
56procedure _degrees_vector3(ARadians, AResult: Pointer);
57cdecl; external _LIB_FASTMATH name _PREFIX + 'degrees_vector3';
58
59{ @exclude }
60procedure _degrees_vector4(ARadians, AResult: Pointer);
61cdecl; external _LIB_FASTMATH name _PREFIX + 'degrees_vector4';
62
63{ @exclude }
64function _sqrt_scalar(A: Single): Single;
65cdecl; external _LIB_FASTMATH name _PREFIX + 'sqrt_scalar';
66
67{ @exclude }
68procedure _sqrt_vector2(A, AResult: Pointer);
69cdecl; external _LIB_FASTMATH name _PREFIX + 'sqrt_vector2';
70
71{ @exclude }
72procedure _sqrt_vector3(A, AResult: Pointer);
73cdecl; external _LIB_FASTMATH name _PREFIX + 'sqrt_vector3';
74
75{ @exclude }
76procedure _sqrt_vector4(A, AResult: Pointer);
77cdecl; external _LIB_FASTMATH name _PREFIX + 'sqrt_vector4';
78
79{ @exclude }
80function _inverse_sqrt_scalar(A: Single): Single;
81cdecl; external _LIB_FASTMATH name _PREFIX + 'inverse_sqrt_scalar';
82
83{ @exclude }
84procedure _inverse_sqrt_vector2(A, AResult: Pointer);
85cdecl; external _LIB_FASTMATH name _PREFIX + 'inverse_sqrt_vector2';
86
87{ @exclude }
88procedure _inverse_sqrt_vector3(A, AResult: Pointer);
89cdecl; external _LIB_FASTMATH name _PREFIX + 'inverse_sqrt_vector3';
90
91{ @exclude }
92procedure _inverse_sqrt_vector4(A, AResult: Pointer);
93cdecl; external _LIB_FASTMATH name _PREFIX + 'inverse_sqrt_vector4';
94
95{ @exclude }
96procedure _fast_sincos_scalar(A: Single; ASin, ACos: Pointer);
97cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_sincos_scalar';
98
99{ @exclude }
100procedure _fast_sincos_vector2(A, ASin, ACos: Pointer);
101cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_sincos_vector2';
102
103{ @exclude }
104procedure _fast_sincos_vector3(A, ASin, ACos: Pointer);
105cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_sincos_vector3';
106
107{ @exclude }
108procedure _fast_sincos_vector4(A, ASin, ACos: Pointer);
109cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_sincos_vector4';
110
111{ @exclude }
112function _fast_exp_scalar(A: Single): Single;
113cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp_scalar';
114
115{ @exclude }
116procedure _fast_exp_vector2(A, AResult: Pointer);
117cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp_vector2';
118
119{ @exclude }
120procedure _fast_exp_vector3(A, AResult: Pointer);
121cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp_vector3';
122
123{ @exclude }
124procedure _fast_exp_vector4(A, AResult: Pointer);
125cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp_vector4';
126
127{ @exclude }
128function _fast_ln_scalar(A: Single): Single;
129cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_ln_scalar';
130
131{ @exclude }
132procedure _fast_ln_vector2(A, AResult: Pointer);
133cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_ln_vector2';
134
135{ @exclude }
136procedure _fast_ln_vector3(A, AResult: Pointer);
137cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_ln_vector3';
138
139{ @exclude }
140procedure _fast_ln_vector4(A, AResult: Pointer);
141cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_ln_vector4';
142
143{ @exclude }
144function _fast_log2_scalar(A: Single): Single;
145cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_log2_scalar';
146
147{ @exclude }
148procedure _fast_log2_vector2(A, AResult: Pointer);
149cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_log2_vector2';
150
151{ @exclude }
152procedure _fast_log2_vector3(A, AResult: Pointer);
153cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_log2_vector3';
154
155{ @exclude }
156procedure _fast_log2_vector4(A, AResult: Pointer);
157cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_log2_vector4';
158
159{ @exclude }
160function _fast_exp2_scalar(A: Single): Single;
161cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp2_scalar';
162
163{ @exclude }
164procedure _fast_exp2_vector2(A, AResult: Pointer);
165cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp2_vector2';
166
167{ @exclude }
168procedure _fast_exp2_vector3(A, AResult: Pointer);
169cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp2_vector3';
170
171{ @exclude }
172procedure _fast_exp2_vector4(A, AResult: Pointer);
173cdecl; external _LIB_FASTMATH name _PREFIX + 'fast_exp2_vector4';
174
175{ @exclude }
176function _abs_scalar(A: Single): Single;
177cdecl; external _LIB_FASTMATH name _PREFIX + 'abs_scalar';
178
179{ @exclude }
180procedure _abs_vector2(A, AResult: Pointer);
181cdecl; external _LIB_FASTMATH name _PREFIX + 'abs_vector2';
182
183{ @exclude }
184procedure _abs_vector3(A, AResult: Pointer);
185cdecl; external _LIB_FASTMATH name _PREFIX + 'abs_vector3';
186
187{ @exclude }
188procedure _abs_vector4(A, AResult: Pointer);
189cdecl; external _LIB_FASTMATH name _PREFIX + 'abs_vector4';
190
191{ @exclude }
192function _sign_scalar(A: Single): Single;
193cdecl; external _LIB_FASTMATH name _PREFIX + 'sign_scalar';
194
195{ @exclude }
196procedure _sign_vector2(A, AResult: Pointer);
197cdecl; external _LIB_FASTMATH name _PREFIX + 'sign_vector2';
198
199{ @exclude }
200procedure _sign_vector3(A, AResult: Pointer);
201cdecl; external _LIB_FASTMATH name _PREFIX + 'sign_vector3';
202
203{ @exclude }
204procedure _sign_vector4(A, AResult: Pointer);
205cdecl; external _LIB_FASTMATH name _PREFIX + 'sign_vector4';
206
207{ @exclude }
208function _floor_scalar(A: Single): Integer;
209cdecl; external _LIB_FASTMATH name _PREFIX + 'floor_scalar';
210
211{ @exclude }
212procedure _floor_vector2(A, AResult: Pointer);
213cdecl; external _LIB_FASTMATH name _PREFIX + 'floor_vector2';
214
215{ @exclude }
216procedure _floor_vector3(A, AResult: Pointer);
217cdecl; external _LIB_FASTMATH name _PREFIX + 'floor_vector3';
218
219{ @exclude }
220procedure _floor_vector4(A, AResult: Pointer);
221cdecl; external _LIB_FASTMATH name _PREFIX + 'floor_vector4';
222
223{ @exclude }
224function _trunc_scalar(A: Single): Integer;
225cdecl; external _LIB_FASTMATH name _PREFIX + 'trunc_scalar';
226
227{ @exclude }
228procedure _trunc_vector2(A, AResult: Pointer);
229cdecl; external _LIB_FASTMATH name _PREFIX + 'trunc_vector2';
230
231{ @exclude }
232procedure _trunc_vector3(A, AResult: Pointer);
233cdecl; external _LIB_FASTMATH name _PREFIX + 'trunc_vector3';
234
235{ @exclude }
236procedure _trunc_vector4(A, AResult: Pointer);
237cdecl; external _LIB_FASTMATH name _PREFIX + 'trunc_vector4';
238
239{ @exclude }
240function _round_scalar(A: Single): Integer;
241cdecl; external _LIB_FASTMATH name _PREFIX + 'round_scalar';
242
243{ @exclude }
244procedure _round_vector2(A, AResult: Pointer);
245cdecl; external _LIB_FASTMATH name _PREFIX + 'round_vector2';
246
247{ @exclude }
248procedure _round_vector3(A, AResult: Pointer);
249cdecl; external _LIB_FASTMATH name _PREFIX + 'round_vector3';
250
251{ @exclude }
252procedure _round_vector4(A, AResult: Pointer);
253cdecl; external _LIB_FASTMATH name _PREFIX + 'round_vector4';
254
255{ @exclude }
256function _ceil_scalar(A: Single): Integer;
257cdecl; external _LIB_FASTMATH name _PREFIX + 'ceil_scalar';
258
259{ @exclude }
260procedure _ceil_vector2(A, AResult: Pointer);
261cdecl; external _LIB_FASTMATH name _PREFIX + 'ceil_vector2';
262
263{ @exclude }
264procedure _ceil_vector3(A, AResult: Pointer);
265cdecl; external _LIB_FASTMATH name _PREFIX + 'ceil_vector3';
266
267{ @exclude }
268procedure _ceil_vector4(A, AResult: Pointer);
269cdecl; external _LIB_FASTMATH name _PREFIX + 'ceil_vector4';
270
271{ @exclude }
272function _frac_scalar(A: Single): Single;
273cdecl; external _LIB_FASTMATH name _PREFIX + 'frac_scalar';
274
275{ @exclude }
276procedure _frac_vector2(A, AResult: Pointer);
277cdecl; external _LIB_FASTMATH name _PREFIX + 'frac_vector2';
278
279{ @exclude }
280procedure _frac_vector3(A, AResult: Pointer);
281cdecl; external _LIB_FASTMATH name _PREFIX + 'frac_vector3';
282
283{ @exclude }
284procedure _frac_vector4(A, AResult: Pointer);
285cdecl; external _LIB_FASTMATH name _PREFIX + 'frac_vector4';
286
287{ @exclude }
288function _fmod_scalar(A, B: Single): Single;
289cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_scalar';
290
291{ @exclude }
292procedure _fmod_vector2(A, B, AResult: Pointer);
293cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_vector2';
294
295{ @exclude }
296procedure _fmod_vector3(A, B, AResult: Pointer);
297cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_vector3';
298
299{ @exclude }
300procedure _fmod_vector4(A, B, AResult: Pointer);
301cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_vector4';
302
303{ @exclude }
304procedure _fmod_vector2_scalar(A: Pointer; B: Single; AResult: Pointer);
305cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_vector2_scalar';
306
307{ @exclude }
308procedure _fmod_vector3_scalar(A: Pointer; B: Single; AResult: Pointer);
309cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_vector3_scalar';
310
311{ @exclude }
312procedure _fmod_vector4_scalar(A: Pointer; B: Single; AResult: Pointer);
313cdecl; external _LIB_FASTMATH name _PREFIX + 'fmod_vector4_scalar';
314
315{ @exclude }
316function _modf_scalar(A: Single; B: Pointer): Single;
317cdecl; external _LIB_FASTMATH name _PREFIX + 'modf_scalar';
318
319{ @exclude }
320procedure _modf_vector2(A, B, AResult: Pointer);
321cdecl; external _LIB_FASTMATH name _PREFIX + 'modf_vector2';
322
323{ @exclude }
324procedure _modf_vector3(A, B, AResult: Pointer);
325cdecl; external _LIB_FASTMATH name _PREFIX + 'modf_vector3';
326
327{ @exclude }
328procedure _modf_vector4(A, B, AResult: Pointer);
329cdecl; external _LIB_FASTMATH name _PREFIX + 'modf_vector4';
330
331{ @exclude }
332procedure _min_vector2(A, B, AResult: Pointer);
333cdecl; external _LIB_FASTMATH name _PREFIX + 'min_vector2';
334
335{ @exclude }
336procedure _min_vector2_scalar(A: Pointer; B: Single; AResult: Pointer);
337cdecl; external _LIB_FASTMATH name _PREFIX + 'min_vector2_scalar';
338
339{ @exclude }
340procedure _min_vector3(A, B, AResult: Pointer);
341cdecl; external _LIB_FASTMATH name _PREFIX + 'min_vector3';
342
343{ @exclude }
344procedure _min_vector3_scalar(A: Pointer; B: Single; AResult: Pointer);
345cdecl; external _LIB_FASTMATH name _PREFIX + 'min_vector3_scalar';
346
347{ @exclude }
348procedure _min_vector4(A, B, AResult: Pointer);
349cdecl; external _LIB_FASTMATH name _PREFIX + 'min_vector4';
350
351{ @exclude }
352procedure _min_vector4_scalar(A: Pointer; B: Single; AResult: Pointer);
353cdecl; external _LIB_FASTMATH name _PREFIX + 'min_vector4_scalar';
354
355{ @exclude }
356procedure _max_vector2(A, B, AResult: Pointer);
357cdecl; external _LIB_FASTMATH name _PREFIX + 'max_vector2';
358
359{ @exclude }
360procedure _max_vector2_scalar(A: Pointer; B: Single; AResult: Pointer);
361cdecl; external _LIB_FASTMATH name _PREFIX + 'max_vector2_scalar';
362
363{ @exclude }
364procedure _max_vector3(A, B, AResult: Pointer);
365cdecl; external _LIB_FASTMATH name _PREFIX + 'max_vector3';
366
367{ @exclude }
368procedure _max_vector3_scalar(A: Pointer; B: Single; AResult: Pointer);
369cdecl; external _LIB_FASTMATH name _PREFIX + 'max_vector3_scalar';
370
371{ @exclude }
372procedure _max_vector4(A, B, AResult: Pointer);
373cdecl; external _LIB_FASTMATH name _PREFIX + 'max_vector4';
374
375{ @exclude }
376procedure _max_vector4_scalar(A: Pointer; B: Single; AResult: Pointer);
377cdecl; external _LIB_FASTMATH name _PREFIX + 'max_vector4_scalar';
378
379{ @exclude }
380function _ensure_range_scalar(A, AMin, AMax: Single): Single;
381cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_scalar';
382
383{ @exclude }
384procedure _ensure_range_vector2(A, AMin, AMax, AResult: Pointer);
385cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_vector2';
386
387{ @exclude }
388procedure _ensure_range_vector2_scalar(A: Pointer; AMin, AMax: Single; AResult: Pointer);
389cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_vector2_scalar';
390
391{ @exclude }
392procedure _ensure_range_vector3(A, AMin, AMax, AResult: Pointer);
393cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_vector3';
394
395{ @exclude }
396procedure _ensure_range_vector3_scalar(A: Pointer; AMin, AMax: Single; AResult: Pointer);
397cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_vector3_scalar';
398
399{ @exclude }
400procedure _ensure_range_vector4(A, AMin, AMax, AResult: Pointer);
401cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_vector4';
402
403{ @exclude }
404procedure _ensure_range_vector4_scalar(A: Pointer; AMin, AMax: Single; AResult: Pointer);
405cdecl; external _LIB_FASTMATH name _PREFIX + 'ensure_range_vector4_scalar';
406
407{ @exclude }
408procedure _mix_vector2(A, B, T, AResult: Pointer);
409cdecl; external _LIB_FASTMATH name _PREFIX + 'mix_vector2';
410
411{ @exclude }
412procedure _mix_vector2_scalar(A, B: Pointer; T: Single; AResult: Pointer);
413cdecl; external _LIB_FASTMATH name _PREFIX + 'mix_vector2_scalar';
414
415{ @exclude }
416procedure _mix_vector3(A, B, T, AResult: Pointer);
417cdecl; external _LIB_FASTMATH name _PREFIX + 'mix_vector3';
418
419{ @exclude }
420procedure _mix_vector3_scalar(A, B: Pointer; T: Single; AResult: Pointer);
421cdecl; external _LIB_FASTMATH name _PREFIX + 'mix_vector3_scalar';
422
423{ @exclude }
424procedure _mix_vector4(A, B, T, AResult: Pointer);
425cdecl; external _LIB_FASTMATH name _PREFIX + 'mix_vector4';
426
427{ @exclude }
428procedure _mix_vector4_scalar(A, B: Pointer; T: Single; AResult: Pointer);
429cdecl; external _LIB_FASTMATH name _PREFIX + 'mix_vector4_scalar';
430
431{ @exclude }
432procedure _step_vector2(AEdge, A, AResult: Pointer);
433cdecl; external _LIB_FASTMATH name _PREFIX + 'step_vector2';
434
435{ @exclude }
436procedure _step_scalar_vector2(AEdge: Single; A, AResult: Pointer);
437cdecl; external _LIB_FASTMATH name _PREFIX + 'step_scalar_vector2';
438
439{ @exclude }
440procedure _step_vector3(AEdge, A, AResult: Pointer);
441cdecl; external _LIB_FASTMATH name _PREFIX + 'step_vector3';
442
443{ @exclude }
444procedure _step_scalar_vector3(AEdge: Single; A, AResult: Pointer);
445cdecl; external _LIB_FASTMATH name _PREFIX + 'step_scalar_vector3';
446
447{ @exclude }
448procedure _step_vector4(AEdge, A, AResult: Pointer);
449cdecl; external _LIB_FASTMATH name _PREFIX + 'step_vector4';
450
451{ @exclude }
452procedure _step_scalar_vector4(AEdge: Single; A, AResult: Pointer);
453cdecl; external _LIB_FASTMATH name _PREFIX + 'step_scalar_vector4';
454
455{ @exclude }
456procedure _smoothstep_vector2(AEdge0, AEdge1, A, AResult: Pointer);
457cdecl; external _LIB_FASTMATH name _PREFIX + 'smoothstep_vector2';
458
459{ @exclude }
460procedure _smoothstep_scalar_vector2(AEdge0, AEdge1: Single; A, AResult: Pointer);
461cdecl; external _LIB_FASTMATH name _PREFIX + 'smoothstep_scalar_vector2';
462
463{ @exclude }
464procedure _smoothstep_vector3(AEdge0, AEdge1, A, AResult: Pointer);
465cdecl; external _LIB_FASTMATH name _PREFIX + 'smoothstep_vector3';
466
467{ @exclude }
468procedure _smoothstep_scalar_vector3(AEdge0, AEdge1: Single; A, AResult: Pointer);
469cdecl; external _LIB_FASTMATH name _PREFIX + 'smoothstep_scalar_vector3';
470
471{ @exclude }
472procedure _smoothstep_vector4(AEdge0, AEdge1, A, AResult: Pointer);
473cdecl; external _LIB_FASTMATH name _PREFIX + 'smoothstep_vector4';
474
475{ @exclude }
476procedure _smoothstep_scalar_vector4(AEdge0, AEdge1: Single; A, AResult: Pointer);
477cdecl; external _LIB_FASTMATH name _PREFIX + 'smoothstep_scalar_vector4';
478
479{ @exclude }
480procedure _fma_vector2(A, B, C, AResult: Pointer);
481cdecl; external _LIB_FASTMATH name _PREFIX + 'fma_vector2';
482
483{ @exclude }
484procedure _fma_vector3(A, B, C, AResult: Pointer);
485cdecl; external _LIB_FASTMATH name _PREFIX + 'fma_vector3';
486
487{ @exclude }
488procedure _fma_vector4(A, B, C, AResult: Pointer);
489cdecl; external _LIB_FASTMATH name _PREFIX + 'fma_vector4';
490
491{ @exclude }
492function _vector2_length(A: Pointer): Single;
493cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_length';
494
495{ @exclude }
496function _vector3_length(A: Pointer): Single;
497cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_length';
498
499{ @exclude }
500function _vector4_length(A: Pointer): Single;
501cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_length';
502
503{ @exclude }
504function _vector2_distance(A, B: Pointer): Single;
505cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_distance';
506
507{ @exclude }
508function _vector3_distance(A, B: Pointer): Single;
509cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_distance';
510
511{ @exclude }
512function _vector4_distance(A, B: Pointer): Single;
513cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_distance';
514
515{ @exclude }
516function _vector2_distance_squared(A, B: Pointer): Single;
517cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_distance_squared';
518
519{ @exclude }
520function _vector3_distance_squared(A, B: Pointer): Single;
521cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_distance_squared';
522
523{ @exclude }
524function _vector4_distance_squared(A, B: Pointer): Single;
525cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_distance_squared';
526
527{ @exclude }
528function _vector2_dot(A, B: Pointer): Single;
529cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_dot';
530
531{ @exclude }
532function _vector3_dot(A, B: Pointer): Single;
533cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_dot';
534
535{ @exclude }
536function _vector4_dot(A, B: Pointer): Single;
537cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_dot';
538
539{ @exclude }
540procedure _vector3_cross(A, B, AResult: Pointer);
541cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_cross';
542
543{ @exclude }
544procedure _vector2_normalize_fast(A, AResult: Pointer);
545cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_normalize';
546
547{ @exclude }
548procedure _vector3_normalize_fast(A, AResult: Pointer);
549cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_normalize';
550
551{ @exclude }
552procedure _vector4_normalize_fast(A, AResult: Pointer);
553cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_normalize';
554
555{ @exclude }
556procedure _vector2_faceforward(N, I, NRef, AResult: Pointer);
557cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_faceforward';
558
559{ @exclude }
560procedure _vector3_faceforward(N, I, NRef, AResult: Pointer);
561cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_faceforward';
562
563{ @exclude }
564procedure _vector4_faceforward(N, I, NRef, AResult: Pointer);
565cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_faceforward';
566
567{ @exclude }
568procedure _vector2_reflect(I, N, AResult: Pointer);
569cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_reflect';
570
571{ @exclude }
572procedure _vector3_reflect(I, N, AResult: Pointer);
573cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_reflect';
574
575{ @exclude }
576procedure _vector4_reflect(I, N, AResult: Pointer);
577cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_reflect';
578
579{ @exclude }
580procedure _vector2_refract(I, N: Pointer; Eta: Single; AResult: Pointer);
581cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_refract';
582
583{ @exclude }
584procedure _vector3_refract(I, N: Pointer; Eta: Single; AResult: Pointer);
585cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_refract';
586
587{ @exclude }
588procedure _vector4_refract(I, N: Pointer; Eta: Single; AResult: Pointer);
589cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_refract';
590
591{ @exclude }
592procedure _matrix2_comp_mult(A, B, AResult: Pointer);
593cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_comp_mult';
594
595{ @exclude }
596procedure _matrix3_comp_mult(A, B, AResult: Pointer);
597cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_comp_mult';
598
599{ @exclude }
600procedure _matrix4_comp_mult(A, B, AResult: Pointer);
601cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_comp_mult';
602
603{ @exclude }
604procedure _outer_product_matrix2(C, R, AResult: Pointer);
605cdecl; external _LIB_FASTMATH name _PREFIX + 'outer_product_matrix2';
606
607{ @exclude }
608procedure _outer_product_matrix3(C, R, AResult: Pointer);
609cdecl; external _LIB_FASTMATH name _PREFIX + 'outer_product_matrix3';
610
611{ @exclude }
612procedure _outer_product_matrix4(C, R, AResult: Pointer);
613cdecl; external _LIB_FASTMATH name _PREFIX + 'outer_product_matrix4';
614
615{ @exclude }
616procedure _matrix2_transpose(A, AResult: Pointer);
617cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_transpose';
618
619{ @exclude }
620procedure _matrix3_transpose(A, AResult: Pointer);
621cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_transpose';
622
623{ @exclude }
624procedure _matrix4_transpose(A, AResult: Pointer);
625cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_transpose';
626
627{ @exclude }
628procedure _matrix4_inverse(A, AResult: Pointer);
629cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_inverse';
630
631{ @exclude }
632procedure _vector2_add_scalar(A: Pointer; B: Single; AResult: Pointer);
633cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_add_scalar';
634
635{ @exclude }
636procedure _scalar_add_vector2(A: Single; B, AResult: Pointer);
637cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_add_vector2';
638
639{ @exclude }
640procedure _vector2_add_vector2(A, B, AResult: Pointer);
641cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_add_vector2';
642
643{ @exclude }
644procedure _vector2_sub_scalar(A: Pointer; B: Single; AResult: Pointer);
645cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_sub_scalar';
646
647{ @exclude }
648procedure _scalar_sub_vector2(A: Single; B, AResult: Pointer);
649cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_sub_vector2';
650
651{ @exclude }
652procedure _vector2_sub_vector2(A, B, AResult: Pointer);
653cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_sub_vector2';
654
655{ @exclude }
656procedure _vector2_mul_scalar(A: Pointer; B: Single; AResult: Pointer);
657cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_mul_scalar';
658
659{ @exclude }
660procedure _scalar_mul_vector2(A: Single; B, AResult: Pointer);
661cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_mul_vector2';
662
663{ @exclude }
664procedure _vector2_mul_vector2(A, B, AResult: Pointer);
665cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_mul_vector2';
666
667{ @exclude }
668procedure _vector2_div_scalar(A: Pointer; B: Single; AResult: Pointer);
669cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_div_scalar';
670
671{ @exclude }
672procedure _scalar_div_vector2(A: Single; B, AResult: Pointer);
673cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_div_vector2';
674
675{ @exclude }
676procedure _vector2_div_vector2(A, B, AResult: Pointer);
677cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_div_vector2';
678
679{ @exclude }
680procedure _neg_vector3(A, AResult: Pointer);
681cdecl; external _LIB_FASTMATH name _PREFIX + 'neg_vector3';
682
683{ @exclude }
684procedure _neg_vector4(A, AResult: Pointer);
685cdecl; external _LIB_FASTMATH name _PREFIX + 'neg_vector4';
686
687{ @exclude }
688procedure _vector3_add_scalar(A: Pointer; B: Single; AResult: Pointer);
689cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_add_scalar';
690
691{ @exclude }
692procedure _vector4_add_scalar(A: Pointer; B: Single; AResult: Pointer);
693cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_add_scalar';
694
695{ @exclude }
696procedure _scalar_add_vector3(A: Single; B, AResult: Pointer);
697cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_add_vector3';
698
699{ @exclude }
700procedure _scalar_add_vector4(A: Single; B, AResult: Pointer);
701cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_add_vector4';
702
703{ @exclude }
704procedure _vector3_add_vector3(A, B, AResult: Pointer);
705cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_add_vector3';
706
707{ @exclude }
708procedure _vector4_add_vector4(A, B, AResult: Pointer);
709cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_add_vector4';
710
711{ @exclude }
712procedure _vector3_sub_scalar(A: Pointer; B: Single; AResult: Pointer);
713cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_sub_scalar';
714
715{ @exclude }
716procedure _vector4_sub_scalar(A: Pointer; B: Single; AResult: Pointer);
717cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_sub_scalar';
718
719{ @exclude }
720procedure _scalar_sub_vector3(A: Single; B, AResult: Pointer);
721cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_sub_vector3';
722
723{ @exclude }
724procedure _scalar_sub_vector4(A: Single; B, AResult: Pointer);
725cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_sub_vector4';
726
727{ @exclude }
728procedure _vector3_sub_vector3(A, B, AResult: Pointer);
729cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_sub_vector3';
730
731{ @exclude }
732procedure _vector4_sub_vector4(A, B, AResult: Pointer);
733cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_sub_vector4';
734
735{ @exclude }
736procedure _vector3_mul_scalar(A: Pointer; B: Single; AResult: Pointer);
737cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_mul_scalar';
738
739{ @exclude }
740procedure _vector4_mul_scalar(A: Pointer; B: Single; AResult: Pointer);
741cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_mul_scalar';
742
743{ @exclude }
744procedure _scalar_mul_vector3(A: Single; B, AResult: Pointer);
745cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_mul_vector3';
746
747{ @exclude }
748procedure _scalar_mul_vector4(A: Single; B, AResult: Pointer);
749cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_mul_vector4';
750
751{ @exclude }
752procedure _vector3_mul_vector3(A, B, AResult: Pointer);
753cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_mul_vector3';
754
755{ @exclude }
756procedure _vector4_mul_vector4(A, B, AResult: Pointer);
757cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_mul_vector4';
758
759{ @exclude }
760procedure _vector3_div_scalar(A: Pointer; B: Single; AResult: Pointer);
761cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_div_scalar';
762
763{ @exclude }
764procedure _vector4_div_scalar(A: Pointer; B: Single; AResult: Pointer);
765cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_div_scalar';
766
767{ @exclude }
768procedure _scalar_div_vector3(A: Single; B, AResult: Pointer);
769cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_div_vector3';
770
771{ @exclude }
772procedure _scalar_div_vector4(A: Single; B, AResult: Pointer);
773cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_div_vector4';
774
775{ @exclude }
776procedure _vector3_div_vector3(A, B, AResult: Pointer);
777cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_div_vector3';
778
779{ @exclude }
780procedure _vector4_div_vector4(A, B, AResult: Pointer);
781cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_div_vector4';
782
783{ @exclude }
784procedure _neg_matrix2(A, AResult: Pointer);
785cdecl; external _LIB_FASTMATH name _PREFIX + 'neg_matrix2';
786
787{ @exclude }
788procedure _matrix2_add_scalar(A: Pointer; B: Single; AResult: Pointer);
789cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_add_scalar';
790
791{ @exclude }
792procedure _scalar_add_matrix2(A: Single; B, AResult: Pointer);
793cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_add_matrix2';
794
795{ @exclude }
796procedure _matrix2_add_matrix2(A, B, AResult: Pointer);
797cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_add_matrix2';
798
799{ @exclude }
800procedure _matrix2_sub_scalar(A: Pointer; B: Single; AResult: Pointer);
801cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_sub_scalar';
802
803{ @exclude }
804procedure _scalar_sub_matrix2(A: Single; B, AResult: Pointer);
805cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_sub_matrix2';
806
807{ @exclude }
808procedure _matrix2_sub_matrix2(A, B, AResult: Pointer);
809cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_sub_matrix2';
810
811{ @exclude }
812procedure _matrix2_mul_scalar(A: Pointer; B: Single; AResult: Pointer);
813cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_mul_scalar';
814
815{ @exclude }
816procedure _scalar_mul_matrix2(A: Single; B, AResult: Pointer);
817cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_mul_matrix2';
818
819{ @exclude }
820procedure _vector2_mul_matrix2(A, B, AResult: Pointer);
821cdecl; external _LIB_FASTMATH name _PREFIX + 'vector2_mul_matrix2';
822
823{ @exclude }
824procedure _matrix2_mul_vector2(A, B, AResult: Pointer);
825cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_mul_vector2';
826
827{ @exclude }
828procedure _matrix2_mul_matrix2(A, B, AResult: Pointer);
829cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_mul_matrix2';
830
831{ @exclude }
832procedure _matrix2_div_scalar(A: Pointer; B: Single; AResult: Pointer);
833cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix2_div_scalar';
834
835{ @exclude }
836procedure _scalar_div_matrix2(A: Single; B, AResult: Pointer);
837cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_div_matrix2';
838
839{ @exclude }
840procedure _neg_matrix3(A, AResult: Pointer);
841cdecl; external _LIB_FASTMATH name _PREFIX + 'neg_matrix3';
842
843{ @exclude }
844procedure _matrix3_add_scalar(A: Pointer; B: Single; AResult: Pointer);
845cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_add_scalar';
846
847{ @exclude }
848procedure _scalar_add_matrix3(A: Single; B, AResult: Pointer);
849cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_add_matrix3';
850
851{ @exclude }
852procedure _matrix3_add_matrix3(A, B, AResult: Pointer);
853cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_add_matrix3';
854
855{ @exclude }
856procedure _matrix3_sub_scalar(A: Pointer; B: Single; AResult: Pointer);
857cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_sub_scalar';
858
859{ @exclude }
860procedure _scalar_sub_matrix3(A: Single; B, AResult: Pointer);
861cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_sub_matrix3';
862
863{ @exclude }
864procedure _matrix3_sub_matrix3(A, B, AResult: Pointer);
865cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_sub_matrix3';
866
867{ @exclude }
868procedure _matrix3_mul_scalar(A: Pointer; B: Single; AResult: Pointer);
869cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_mul_scalar';
870
871{ @exclude }
872procedure _scalar_mul_matrix3(A: Single; B, AResult: Pointer);
873cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_mul_matrix3';
874
875{ @exclude }
876procedure _vector3_mul_matrix3(A, B, AResult: Pointer);
877cdecl; external _LIB_FASTMATH name _PREFIX + 'vector3_mul_matrix3';
878
879{ @exclude }
880procedure _matrix3_mul_vector3(A, B, AResult: Pointer);
881cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_mul_vector3';
882
883{ @exclude }
884procedure _matrix3_mul_matrix3(A, B, AResult: Pointer);
885cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_mul_matrix3';
886
887{ @exclude }
888procedure _matrix3_div_scalar(A: Pointer; B: Single; AResult: Pointer);
889cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix3_div_scalar';
890
891{ @exclude }
892procedure _scalar_div_matrix3(A: Single; B, AResult: Pointer);
893cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_div_matrix3';
894
895{ @exclude }
896procedure _neg_matrix4(A, AResult: Pointer);
897cdecl; external _LIB_FASTMATH name _PREFIX + 'neg_matrix4';
898
899{ @exclude }
900procedure _matrix4_add_scalar(A: Pointer; B: Single; AResult: Pointer);
901cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_add_scalar';
902
903{ @exclude }
904procedure _scalar_add_matrix4(A: Single; B, AResult: Pointer);
905cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_add_matrix4';
906
907{ @exclude }
908procedure _matrix4_add_matrix4(A, B, AResult: Pointer);
909cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_add_matrix4';
910
911{ @exclude }
912procedure _matrix4_sub_scalar(A: Pointer; B: Single; AResult: Pointer);
913cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_sub_scalar';
914
915{ @exclude }
916procedure _scalar_sub_matrix4(A: Single; B, AResult: Pointer);
917cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_sub_matrix4';
918
919{ @exclude }
920procedure _matrix4_sub_matrix4(A, B, AResult: Pointer);
921cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_sub_matrix4';
922
923{ @exclude }
924procedure _matrix4_mul_scalar(A: Pointer; B: Single; AResult: Pointer);
925cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_mul_scalar';
926
927{ @exclude }
928procedure _scalar_mul_matrix4(A: Single; B, AResult: Pointer);
929cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_mul_matrix4';
930
931{ @exclude }
932procedure _vector4_mul_matrix4(A, B, AResult: Pointer);
933cdecl; external _LIB_FASTMATH name _PREFIX + 'vector4_mul_matrix4';
934
935{ @exclude }
936procedure _matrix4_mul_vector4(A, B, AResult: Pointer);
937cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_mul_vector4';
938
939{ @exclude }
940procedure _matrix4_mul_matrix4(A, B, AResult: Pointer);
941cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_mul_matrix4';
942
943{ @exclude }
944procedure _matrix4_div_scalar(A: Pointer; B: Single; AResult: Pointer);
945cdecl; external _LIB_FASTMATH name _PREFIX + 'matrix4_div_scalar';
946
947{ @exclude }
948procedure _scalar_div_matrix4(A: Single; B, AResult: Pointer);
949cdecl; external _LIB_FASTMATH name _PREFIX + 'scalar_div_matrix4';
950{$ENDIF FM_ARM}
951