1 /*************************************************************************
2 ALGLIB 3.18.0 (source code generated 2021-10-25)
3 Copyright (c) Sergey Bochkanov (ALGLIB project).
4 
5 >>> SOURCE LICENSE >>>
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation (www.fsf.org); either version 2 of the
9 License, or (at your option) any later version.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 A copy of the GNU General Public License is available at
17 http://www.fsf.org/licensing/licenses
18 >>> END OF LICENSE >>>
19 *************************************************************************/
20 #ifndef _ap_h
21 #define _ap_h
22 
23 #include <stdio.h>
24 #include <stdlib.h>
25 #include <stddef.h>
26 #include <string>
27 #include <cstring>
28 #include <iostream>
29 #include <math.h>
30 
31 #if defined(__CODEGEARC__)
32 #include <list>
33 #include <vector>
34 #elif defined(__BORLANDC__)
35 #include <list.h>
36 #include <vector.h>
37 #else
38 #include <list>
39 #include <vector>
40 #endif
41 
42 #define AE_USE_CPP
43 /* Definitions */
44 #define AE_UNKNOWN 0
45 #define AE_INTEL 1
46 #define AE_SPARC 2
47 
48 /* OS definitions */
49 #define AE_WINDOWS                    1
50 #define AE_POSIX                      2
51 #define AE_LINUX                    304
52 #if !defined(AE_OS)
53 #define AE_OS AE_UNKNOWN
54 #endif
55 #if AE_OS==AE_LINUX
56 #undef AE_OS
57 #define AE_OS AE_POSIX
58 #define _ALGLIB_USE_LINUX_EXTENSIONS
59 #endif
60 
61 /* threading models for AE_THREADING */
62 #define AE_PARALLEL                 100
63 #define AE_SERIAL                   101
64 #define AE_SERIAL_UNSAFE            102
65 #if !defined(AE_THREADING)
66 #define AE_THREADING AE_PARALLEL
67 #endif
68 
69 /* malloc types for AE_MALLOC */
70 #define AE_STDLIB_MALLOC            200
71 #define AE_BASIC_STATIC_MALLOC      201
72 #if !defined(AE_MALLOC)
73 #define AE_MALLOC AE_STDLIB_MALLOC
74 #endif
75 
76 #define AE_LOCK_ALIGNMENT 16
77 
78 /* automatically determine compiler */
79 #define AE_MSVC 1
80 #define AE_GNUC 2
81 #define AE_SUNC 3
82 #define AE_COMPILER AE_UNKNOWN
83 #ifdef __GNUC__
84 #undef AE_COMPILER
85 #define AE_COMPILER AE_GNUC
86 #endif
87 #if defined(__SUNPRO_C)||defined(__SUNPRO_CC)
88 #undef AE_COMPILER
89 #define AE_COMPILER AE_SUNC
90 #endif
91 #ifdef _MSC_VER
92 #undef AE_COMPILER
93 #define AE_COMPILER AE_MSVC
94 #endif
95 
96 /* compiler-specific definitions */
97 #if AE_COMPILER==AE_MSVC
98 #define ALIGNED __declspec(align(8))
99 #elif AE_COMPILER==AE_GNUC
100 #define ALIGNED __attribute__((aligned(8)))
101 #else
102 #define ALIGNED
103 #endif
104 
105 /* state flags */
106 #define _ALGLIB_FLG_THREADING_MASK          0x7
107 #define _ALGLIB_FLG_THREADING_SHIFT         0
108 #define _ALGLIB_FLG_THREADING_USE_GLOBAL    0x0
109 #define _ALGLIB_FLG_THREADING_SERIAL        0x1
110 #define _ALGLIB_FLG_THREADING_PARALLEL      0x2
111 
112 
113 /* now we are ready to include headers */
114 #include <ctype.h>
115 #include <stdlib.h>
116 #include <stdio.h>
117 #include <stdarg.h>
118 #include <string.h>
119 #include <setjmp.h>
120 #include <math.h>
121 #include <stddef.h>
122 
123 #if defined(AE_HAVE_STDINT)
124 #include <stdint.h>
125 #endif
126 
127 /*
128  * Intel SIMD intrinsics
129  *
130  * Preprocessor directives below:
131  * - include headers for SSE2/AVX2/AVX2+FMA3 intrinsics
132  * - defines _ALGLIB_HAS_SSE2_INTRINSICS, _ALGLIB_HAS_AVX2_INTRINSICS and _ALGLIB_HAS_FMA_INTRINSICS definitions
133  *
134  * These actions are performed when we have:
135  * - x86 architecture definition (AE_CPU==AE_INTEL)
136  * - compiler which supports intrinsics
137  *
138  * Presence of _ALGLIB_HAS_???_INTRINSICS does NOT mean that our CPU
139  * actually supports these intrinsics - such things should be determined
140  * at runtime with ae_cpuid() call. It means that we are working under
141  * Intel and out compiler can issue SIMD-capable code.
142  *
143  */
144 #if defined(AE_CPU)
145 #if AE_CPU==AE_INTEL
146     /*
147      * Intel definitions
148      */
149     #if AE_COMPILER==AE_MSVC
150         /*
151          * MSVC is detected.
152          * We assume that compiler supports all instruction sets
153          * unless something is explicitly turned off.
154          */
155         #if !defined(AE_NO_SSE2)
156             #include <emmintrin.h>
157             #define AE_HAS_SSE2_INTRINSICS
158             #define _ALGLIB_HAS_SSE2_INTRINSICS
159             #if !defined(AE_NO_AVX2)
160                 #include <intrin.h>
161                 #define _ALGLIB_HAS_AVX2_INTRINSICS
162                 #if !defined(AE_NO_FMA)
163                     #define _ALGLIB_HAS_FMA_INTRINSICS
164                 #endif
165             #endif
166         #endif
167     #elif AE_COMPILER==AE_GNUC
168         /*
169          * GCC/CLANG/ICC is detected.
170          * We assume that compiler supports all instruction sets
171          * unless something is explicitly turned off.
172          */
173         #if !defined(AE_NO_SSE2)
174             #include <xmmintrin.h>
175             #define AE_HAS_SSE2_INTRINSICS
176             #define _ALGLIB_HAS_SSE2_INTRINSICS
177             #if !defined(AE_NO_AVX2)
178                 #include <immintrin.h>
179                 #define _ALGLIB_HAS_AVX2_INTRINSICS
180                 #if !defined(AE_NO_FMA)
181                     #define _ALGLIB_HAS_FMA_INTRINSICS
182                 #endif
183             #endif
184         #endif
185     #elif AE_COMPILER==AE_SUNC
186         /*
187          * Sun studio
188          */
189         #include <xmmintrin.h>
190         #include <emmintrin.h>
191         #define AE_HAS_SSE2_INTRINSICS
192         #define _ALGLIB_HAS_SSE2_INTRINSICS
193         #include <immintrin.h>
194         #define _ALGLIB_HAS_AVX2_INTRINSICS
195         #define _ALGLIB_HAS_FMA_INTRINSICS
196     #else
197         /*
198          * Unknown compiler
199          */
200         #if !defined(AE_NO_SSE2)
201             #include <immintrin.h>
202             #define AE_HAS_SSE2_INTRINSICS
203             #define _ALGLIB_HAS_SSE2_INTRINSICS
204             #if !defined(AE_NO_AVX2)
205                 #define _ALGLIB_HAS_AVX2_INTRINSICS
206                 #if !defined(AE_NO_FMA)
207                     #define _ALGLIB_HAS_FMA_INTRINSICS
208                 #endif
209             #endif
210         #endif
211     #endif
212 
213     /*
214      * Intel integrity checks
215      */
216     #if defined(_ALGLIB_INTEGRITY_CHECKS_ONCE)
217         #if defined(_ALGLIB_FAIL_WITHOUT_FMA_INTRINSICS) && !defined(_ALGLIB_HAS_FMA_INTRINSICS)
218 #error ALGLIB was requested to fail without FMA intrinsics
219         #endif
220     #endif
221 #endif
222 #endif
223 
224 
225 
226 /////////////////////////////////////////////////////////////////////////
227 //
228 // THIS SECTION CONTAINS DECLARATIONS FOR BASIC FUNCTIONALITY
229 // LIKE MEMORY MANAGEMENT FOR VECTORS/MATRICES WHICH IS SHARED
230 // BETWEEN C++ AND PURE C LIBRARIES
231 //
232 /////////////////////////////////////////////////////////////////////////
233 namespace alglib_impl
234 {
235 
236 /* if we work under C++ environment, define several conditions */
237 #ifdef AE_USE_CPP
238 #define AE_USE_CPP_BOOL
239 #define AE_USE_CPP_SERIALIZATION
240 #include <iostream>
241 #endif
242 
243 /*
244  * define ae_int32_t, ae_int64_t, ae_int_t, ae_bool, ae_complex, ae_error_type and ae_datatype
245  */
246 
247 #if defined(AE_INT32_T)
248 typedef AE_INT32_T ae_int32_t;
249 #endif
250 #if defined(AE_HAVE_STDINT) && !defined(AE_INT32_T)
251 typedef int32_t ae_int32_t;
252 #endif
253 #if !defined(AE_HAVE_STDINT) && !defined(AE_INT32_T)
254 #if AE_COMPILER==AE_MSVC
255 typedef __int32 ae_int32_t;
256 #endif
257 #if (AE_COMPILER==AE_GNUC) || (AE_COMPILER==AE_SUNC) || (AE_COMPILER==AE_UNKNOWN)
258 typedef int ae_int32_t;
259 #endif
260 #endif
261 
262 #if defined(AE_INT64_T)
263 typedef AE_INT64_T ae_int64_t;
264 #endif
265 #if defined(AE_HAVE_STDINT) && !defined(AE_INT64_T)
266 typedef int64_t ae_int64_t;
267 #endif
268 #if !defined(AE_HAVE_STDINT) && !defined(AE_INT64_T)
269 #if AE_COMPILER==AE_MSVC
270 typedef __int64 ae_int64_t;
271 #endif
272 #if (AE_COMPILER==AE_GNUC) || (AE_COMPILER==AE_SUNC) || (AE_COMPILER==AE_UNKNOWN)
273 typedef signed long long ae_int64_t;
274 #endif
275 #endif
276 
277 #if defined(AE_UINT64_T)
278 typedef AE_UINT64_T ae_uint64_t;
279 #endif
280 #if defined(AE_HAVE_STDINT) && !defined(AE_UINT64_T)
281 typedef uint64_t ae_uint64_t;
282 #endif
283 #if !defined(AE_HAVE_STDINT) && !defined(AE_UINT64_T)
284 #if AE_COMPILER==AE_MSVC
285 typedef unsigned __int64 ae_uint64_t;
286 #endif
287 #if (AE_COMPILER==AE_GNUC) || (AE_COMPILER==AE_SUNC) || (AE_COMPILER==AE_UNKNOWN)
288 typedef unsigned long long ae_uint64_t;
289 #endif
290 #endif
291 
292 #if !defined(AE_INT_T)
293 typedef ptrdiff_t ae_int_t;
294 #endif
295 
296 #if !defined(AE_USE_CPP_BOOL)
297 #define ae_bool char
298 #define ae_true 1
299 #define ae_false 0
300 #else
301 #define ae_bool bool
302 #define ae_true true
303 #define ae_false false
304 #endif
305 
306 typedef struct { double x, y; } ae_complex;
307 
308 typedef enum
309 {
310     ERR_OK = 0,
311     ERR_OUT_OF_MEMORY = 1,
312     ERR_XARRAY_TOO_LARGE = 2,
313     ERR_ASSERTION_FAILED = 3
314 } ae_error_type;
315 
316 typedef ae_int_t ae_datatype;
317 
318 /*
319  * other definitions
320  */
321 enum { OWN_CALLER=1, OWN_AE=2 };
322 enum { ACT_UNCHANGED=1, ACT_SAME_LOCATION=2, ACT_NEW_LOCATION=3 };
323 enum { DT_BOOL=1, DT_BYTE=1, DT_INT=2, DT_REAL=3, DT_COMPLEX=4 };
324 enum { CPU_SSE2=0x1, CPU_AVX2=0x2, CPU_FMA=0x4 };
325 
326 /************************************************************************
327 x-string (zero-terminated):
328     owner       OWN_CALLER or OWN_AE. Determines what to do on realloc().
329                 If vector is owned by caller, X-interface  will  just set
330                 ptr to NULL before realloc(). If it is  owned  by  X,  it
331                 will call ae_free/x_free/aligned_free family functions.
332 
333     last_action ACT_UNCHANGED, ACT_SAME_LOCATION, ACT_NEW_LOCATION
334                 contents is either: unchanged, stored at the same location,
335                 stored at the new location.
336                 this field is set on return from X.
337 
338     ptr         pointer to the actual data
339 
340 Members of this structure are ae_int64_t to avoid alignment problems.
341 ************************************************************************/
342 typedef struct
343 {
344     ALIGNED ae_int64_t     owner;
345     ALIGNED ae_int64_t     last_action;
346     ALIGNED char *ptr;
347 } x_string;
348 
349 /************************************************************************
350 x-vector:
351     cnt         number of elements
352 
353     datatype    one of the DT_XXXX values
354 
355     owner       OWN_CALLER or OWN_AE. Determines what to do on realloc().
356                 If vector is owned by caller, X-interface  will  just set
357                 ptr to NULL before realloc(). If it is  owned  by  X,  it
358                 will call ae_free/x_free/aligned_free family functions.
359 
360     last_action ACT_UNCHANGED, ACT_SAME_LOCATION, ACT_NEW_LOCATION
361                 contents is either: unchanged, stored at the same location,
362                 stored at the new location.
363                 this field is set on return from X interface and may be
364                 used by caller as hint when deciding what to do with data
365                 (if it was ACT_UNCHANGED or ACT_SAME_LOCATION, no array
366                 reallocation or copying is required).
367 
368     ptr         pointer to the actual data
369 
370 Members of this structure are ae_int64_t to avoid alignment problems.
371 ************************************************************************/
372 typedef struct
373 {
374     ae_int64_t     cnt;
375     ae_int64_t     datatype;
376     ae_int64_t     owner;
377     ae_int64_t     last_action;
378     union
379     {
380         void *p_ptr;
381         ae_int64_t portable_alignment_enforcer;
382     } x_ptr;
383 } x_vector;
384 
385 
386 /************************************************************************
387 x-matrix:
388     rows        number of rows. may be zero only when cols is zero too.
389 
390     cols        number of columns. may be zero only when rows is zero too.
391 
392     stride      stride, i.e. distance between first elements of rows (in bytes)
393 
394     datatype    one of the DT_XXXX values
395 
396     owner       OWN_CALLER or OWN_AE. Determines what to do on realloc().
397                 If vector is owned by caller, X-interface  will  just set
398                 ptr to NULL before realloc(). If it is  owned  by  X,  it
399                 will call ae_free/x_free/aligned_free family functions.
400 
401     last_action ACT_UNCHANGED, ACT_SAME_LOCATION, ACT_NEW_LOCATION
402                 contents is either: unchanged, stored at the same location,
403                 stored at the new location.
404                 this field is set on return from X interface and may be
405                 used by caller as hint when deciding what to do with data
406                 (if it was ACT_UNCHANGED or ACT_SAME_LOCATION, no array
407                 reallocation or copying is required).
408 
409     ptr         pointer to the actual data, stored rowwise
410 
411 Members of this structure are ae_int64_t to avoid alignment problems.
412 ************************************************************************/
413 typedef struct
414 {
415     ae_int64_t     rows;
416     ae_int64_t     cols;
417     ae_int64_t     stride;
418     ae_int64_t     datatype;
419     ae_int64_t     owner;
420     ae_int64_t     last_action;
421     union
422     {
423         void *p_ptr;
424         ae_int64_t portable_alignment_enforcer;
425     } x_ptr;
426 } x_matrix;
427 
428 
429 /************************************************************************
430 dynamic block which may be automatically deallocated during stack unwinding
431 
432 p_next          next block in the stack unwinding list.
433                 NULL means that this block is not in the list
434 deallocator     deallocator function which should be used to deallocate block.
435                 NULL for "special" blocks (frame/stack boundaries)
436 ptr             pointer which should be passed to the deallocator.
437                 may be null (for zero-size block), DYN_BOTTOM or DYN_FRAME
438                 for "special" blocks (frame/stack boundaries).
439 
440 valgrind_hint   is a special field which stores a special hint pointer for
441                 Valgrind and other similar memory checking tools.  ALGLIB
442                 manually aligns pointers obtained via malloc, so ptr usually
443                 points to location past the beginning  of  the  actuallly
444                 allocated memory. In such cases memory testing tools  may
445                 report "(possibly) lost" memory.
446 
447                 This "hint" field stores  pointer  actually  returned  by
448                 malloc (or NULL, if for some reason  we  do  not  support
449                 this feature). This field is used merely as  a  hint  for
450                 Valgrind - it should NOT be used for anything else.
451 
452 ************************************************************************/
453 typedef struct ae_dyn_block
454 {
455     struct ae_dyn_block * volatile p_next;
456     /* void *deallocator; */
457     void (*deallocator)(void*);
458     void * volatile ptr;
459     void* valgrind_hint;
460 } ae_dyn_block;
461 
462 typedef void(*ae_deallocator)(void*);
463 
464 /************************************************************************
465 frame marker
466 ************************************************************************/
467 typedef struct ae_frame
468 {
469     ae_dyn_block db_marker;
470 } ae_frame;
471 
472 /************************************************************************
473 ALGLIB environment state
474 ************************************************************************/
475 typedef struct ae_state
476 {
477     /*
478      * endianness type: AE_LITTLE_ENDIAN or AE_BIG_ENDIAN
479      */
480     ae_int_t endianness;
481 
482     /*
483      * double value for NAN
484      */
485     double v_nan;
486 
487     /*
488      * double value for +INF
489      */
490     double v_posinf;
491 
492     /*
493      * double value for -INF
494      */
495     double v_neginf;
496 
497     /*
498      * pointer to the top block in a stack of frames
499      * which hold dynamically allocated objects
500      */
501     ae_dyn_block * volatile p_top_block;
502     ae_dyn_block last_block;
503 
504     /*
505      * jmp_buf pointer for internal C-style exception handling
506      */
507     jmp_buf * volatile break_jump;
508 
509     /*
510      * ae_error_type of the last error (filled when exception is thrown)
511      */
512     ae_error_type volatile last_error;
513 
514     /*
515      * human-readable message (filled when exception is thrown)
516      */
517     const char* volatile error_msg;
518 
519     /*
520      * Flags: call-local settings for ALGLIB
521      */
522     ae_uint64_t flags;
523 
524     /*
525      * threading information:
526      * a) current thread pool
527      * b) current worker thread
528      * c) parent task (one we are solving right now)
529      * d) thread exception handler (function which must be called
530      *    by ae_assert before raising exception).
531      *
532      * NOTE: we use void* to store pointers in order to avoid explicit dependency on smp.h
533      */
534     void *worker_thread;
535     void *parent_task;
536     void (*thread_exception_handler)(void*);
537 
538 } ae_state;
539 
540 /************************************************************************
541 Serializer:
542 
543 * ae_stream_writer type is a function pointer for stream  writer  method;
544   this pointer is used by X-core for out-of-core serialization  (say,  to
545   serialize ALGLIB structure directly to managed C# stream).
546 
547   This function accepts two parameters: pointer to  ANSI  (7-bit)  string
548   and pointer-sized integer passed to serializer  during  initialization.
549   String being passed is a part of the data stream; aux paramerer may  be
550   arbitrary value intended to be used by actual implementation of  stream
551   writer. String parameter may include spaces and  linefeed  symbols,  it
552   should be written to stream as is.
553 
554   Return value must be zero for success or non-zero for failure.
555 
556 * ae_stream_reader type is a function pointer for stream  reader  method;
557   this pointer is used by X-core for out-of-core unserialization (say, to
558   unserialize ALGLIB structure directly from managed C# stream).
559 
560   This function accepts three parameters: pointer-sized integer passed to
561   serializer  during  initialization; number  of  symbols  to  read  from
562   stream; pointer to buffer used to store next  token  read  from  stream
563   (ANSI encoding is used, buffer is large enough to store all symbols and
564   trailing zero symbol).
565 
566   Number of symbols to read is always positive.
567 
568   After being called by X-core, this function must:
569   * skip all space and linefeed characters from the current  position  at
570     the stream and until first non-space non-linefeed character is found
571   * read exactly cnt symbols  from  stream  to  buffer;  check  that  all
572     symbols being read are non-space non-linefeed ones
573   * append trailing zero symbol to buffer
574   * return value must be zero on success, non-zero if  even  one  of  the
575     conditions above fails. When reader returns non-zero value,  contents
576     of buf is not used.
577 ************************************************************************/
578 typedef char(*ae_stream_writer)(const char *p_string, ae_int_t aux);
579 typedef char(*ae_stream_reader)(ae_int_t aux, ae_int_t cnt, char *p_buf);
580 
581 typedef struct
582 {
583     ae_int_t mode;
584     ae_int_t entries_needed;
585     ae_int_t entries_saved;
586     ae_int_t bytes_asked;
587     ae_int_t bytes_written;
588 
589 #ifdef AE_USE_CPP_SERIALIZATION
590     std::string     *out_cppstr;
591 #endif
592     char            *out_str; /* pointer to the current position at the output buffer; advanced with each write operation */
593     const char      *in_str;  /* pointer to the current position at the input  buffer; advanced with each read  operation */
594     ae_int_t         stream_aux;
595     ae_stream_writer stream_writer;
596     ae_stream_reader stream_reader;
597 } ae_serializer;
598 
599 
600 typedef struct ae_vector
601 {
602     /*
603      * Number of elements in array, cnt>=0
604      */
605     ae_int_t cnt;
606 
607     /*
608      * Either DT_BOOL/DT_BYTE, DT_INT, DT_REAL or DT_COMPLEX
609      */
610     ae_datatype datatype;
611 
612     /*
613      * If ptr points to memory owned and managed by ae_vector itself,
614      * this field is ae_false. If vector was attached to x_vector structure
615      * with ae_vector_init_attach_to_x(), this field is ae_true.
616      */
617     ae_bool is_attached;
618 
619     /*
620      * ae_dyn_block structure which manages data in ptr. This structure
621      * is responsible for automatic deletion of object when its frame
622      * is destroyed.
623      */
624     ae_dyn_block data;
625 
626     /*
627      * Pointer to data.
628      * User usually works with this field.
629      */
630     union
631     {
632         void *p_ptr;
633         ae_bool *p_bool;
634         unsigned char *p_ubyte;
635         ae_int_t *p_int;
636         double *p_double;
637         ae_complex *p_complex;
638     } ptr;
639 } ae_vector;
640 
641 typedef struct ae_matrix
642 {
643     ae_int_t rows;
644     ae_int_t cols;
645     ae_int_t stride;
646     ae_datatype datatype;
647 
648     /*
649      * If ptr points to memory owned and managed by ae_vector itself,
650      * this field is ae_false. If vector was attached to x_vector structure
651      * with ae_vector_init_attach_to_x(), this field is ae_true.
652      */
653     ae_bool is_attached;
654 
655     ae_dyn_block data;
656     union
657     {
658         void *p_ptr;
659         void **pp_void;
660         ae_bool **pp_bool;
661         ae_int_t **pp_int;
662         double **pp_double;
663         ae_complex **pp_complex;
664     } ptr;
665 } ae_matrix;
666 
667 typedef struct ae_smart_ptr
668 {
669     /* pointer to subscriber; all changes in ptr are translated to subscriber */
670     void **subscriber;
671 
672     /* pointer to object */
673     void *ptr;
674 
675     /* whether smart pointer owns ptr */
676     ae_bool is_owner;
677 
678     /* whether object pointed by ptr is dynamic - clearing such object requires BOTH
679        calling destructor function AND calling ae_free for memory occupied by object. */
680     ae_bool is_dynamic;
681 
682     /* destructor function for pointer; clears all dynamically allocated memory */
683     void (*destroy)(void*);
684 
685     /* frame entry; used to ensure automatic deallocation of smart pointer in case of exception/exit */
686     ae_dyn_block frame_entry;
687 } ae_smart_ptr;
688 
689 
690 /*************************************************************************
691 Lock.
692 
693 This structure provides OS-independent non-reentrant lock:
694 * under Windows/Posix systems it uses system-provided locks
695 * under Boost it uses OS-independent lock provided by Boost package
696 * when no OS is defined, it uses "fake lock" (just stub which is not thread-safe):
697   a) "fake lock" can be in locked or free mode
698   b) "fake lock" can be used only from one thread - one which created lock
699   c) when thread acquires free lock, it immediately returns
700   d) when thread acquires busy lock, program is terminated
701      (because lock is already acquired and no one else can free it)
702 *************************************************************************/
703 typedef struct
704 {
705     /*
706      * Pointer to _lock structure. This pointer has type void* in order to
707      * make header file OS-independent (lock declaration depends on OS).
708      */
709     void *lock_ptr;
710 
711     /*
712      * For eternal=false this field manages pointer to _lock structure.
713      *
714      * ae_dyn_block structure is responsible for automatic deletion of
715      * the memory allocated for the pointer when its frame is destroyed.
716      */
717     ae_dyn_block db;
718 
719     /*
720      * Whether we have eternal lock object (used by thread pool) or
721      * transient lock. Eternal locks are allocated without using ae_dyn_block
722      * structure and do not allow deallocation.
723      */
724     ae_bool eternal;
725 } ae_lock;
726 
727 
728 /*************************************************************************
729 Shared pool: data structure used to provide thread-safe access to pool  of
730 temporary variables.
731 *************************************************************************/
732 typedef struct ae_shared_pool_entry
733 {
734     void * volatile obj;
735     void * volatile next_entry;
736 } ae_shared_pool_entry;
737 
738 typedef struct ae_shared_pool
739 {
740     /* lock object which protects pool */
741     ae_lock pool_lock;
742 
743     /* seed object (used to create new instances of temporaries) */
744     void                    * volatile seed_object;
745 
746     /*
747      * list of recycled OBJECTS:
748      * 1. entries in this list store pointers to recycled objects
749      * 2. every time we retrieve object, we retrieve first entry from this list,
750      *    move it to recycled_entries and return its obj field to caller/
751      */
752     ae_shared_pool_entry    * volatile recycled_objects;
753 
754     /*
755      * list of recycled ENTRIES:
756      * 1. this list holds entries which are not used to store recycled objects;
757      *    every time recycled object is retrieved, its entry is moved to this list.
758      * 2. every time object is recycled, we try to fetch entry for him from this list
759      *    before allocating it with malloc()
760      */
761     ae_shared_pool_entry    * volatile recycled_entries;
762 
763     /* enumeration pointer, points to current recycled object*/
764     ae_shared_pool_entry    * volatile enumeration_counter;
765 
766     /* size of object; this field is used when we call malloc() for new objects */
767     ae_int_t                size_of_object;
768 
769     /* initializer function; accepts pointer to malloc'ed object, initializes its fields */
770     void (*init)(void* dst, ae_state* state, ae_bool make_automatic);
771 
772     /* copy constructor; accepts pointer to malloc'ed, but not initialized object */
773     void (*init_copy)(void* dst, void* src, ae_state* state, ae_bool make_automatic);
774 
775     /* destructor function; */
776     void (*destroy)(void* ptr);
777 
778     /* frame entry; contains pointer to the pool object itself */
779     ae_dyn_block frame_entry;
780 } ae_shared_pool;
781 
782 void ae_never_call_it();
783 void ae_set_dbg_flag(ae_int64_t flag_id, ae_int64_t flag_val);
784 ae_int64_t ae_get_dbg_value(ae_int64_t id);
785 void ae_set_global_threading(ae_uint64_t flg_value);
786 ae_uint64_t ae_get_global_threading();
787 
788 /************************************************************************
789 Debugging and tracing functions
790 ************************************************************************/
791 void ae_set_error_flag(ae_bool *p_flag, ae_bool cond, const char *filename, int lineno, const char *xdesc);
792 const char * ae_get_last_error_file();
793 int          ae_get_last_error_line();
794 const char * ae_get_last_error_xdesc();
795 
796 void ae_trace_file(const char *tags, const char *filename);
797 void ae_trace_disable();
798 ae_bool ae_is_trace_enabled(const char *tag);
799 void ae_trace(const char * printf_fmt, ...);
800 
801 int ae_tickcount();
802 
803 
804 /************************************************************************
805 ...
806 ************************************************************************/
807 ae_int_t ae_misalignment(const void *ptr, size_t alignment);
808 void* ae_align(void *ptr, size_t alignment);
809 ae_int_t ae_get_effective_workers(ae_int_t nworkers);
810 void  ae_optional_atomic_add_i(ae_int_t *p, ae_int_t v);
811 void  ae_optional_atomic_sub_i(ae_int_t *p, ae_int_t v);
812 
813 void* aligned_malloc(size_t size, size_t alignment);
814 void* aligned_extract_ptr(void *block);
815 void  aligned_free(void *block);
816 void* eternal_malloc(size_t size);
817 #if AE_MALLOC==AE_BASIC_STATIC_MALLOC
818 void set_memory_pool(void *ptr, size_t size);
819 void memory_pool_stats(ae_int_t *bytes_used, ae_int_t *bytes_free);
820 #endif
821 
822 void* ae_malloc(size_t size, ae_state *state);
823 void  ae_free(void *p);
824 ae_int_t ae_sizeof(ae_datatype datatype);
825 ae_bool ae_check_zeros(const void *ptr, ae_int_t n);
826 void ae_touch_ptr(void *p);
827 
828 void ae_state_init(ae_state *state);
829 void ae_state_clear(ae_state *state);
830 void ae_state_set_break_jump(ae_state *state, jmp_buf *buf);
831 void ae_state_set_flags(ae_state *state, ae_uint64_t flags);
832 void ae_clean_up_before_breaking(ae_state *state);
833 void ae_break(ae_state *state, ae_error_type error_type, const char *msg);
834 
835 void ae_frame_make(ae_state *state, ae_frame *tmp);
836 void ae_frame_leave(ae_state *state);
837 
838 void ae_db_attach(ae_dyn_block *block, ae_state *state);
839 void ae_db_init(ae_dyn_block *block, ae_int_t size, ae_state *state, ae_bool make_automatic);
840 void ae_db_realloc(ae_dyn_block *block, ae_int_t size, ae_state *state);
841 void ae_db_free(ae_dyn_block *block);
842 void ae_db_swap(ae_dyn_block *block1, ae_dyn_block *block2);
843 
844 void ae_vector_init(ae_vector *dst, ae_int_t size, ae_datatype datatype, ae_state *state, ae_bool make_automatic);
845 void ae_vector_init_copy(ae_vector *dst, ae_vector *src, ae_state *state, ae_bool make_automatic);
846 void ae_vector_init_from_x(ae_vector *dst, x_vector *src, ae_state *state, ae_bool make_automatic);
847 void ae_vector_init_attach_to_x(ae_vector *dst, x_vector *src, ae_state *state, ae_bool make_automatic);
848 void ae_vector_set_length(ae_vector *dst, ae_int_t newsize, ae_state *state);
849 void ae_vector_resize(ae_vector *dst, ae_int_t newsize, ae_state *state);
850 void ae_vector_clear(ae_vector *dst);
851 void ae_vector_destroy(ae_vector *dst);
852 void ae_swap_vectors(ae_vector *vec1, ae_vector *vec2);
853 
854 void ae_matrix_init(ae_matrix *dst, ae_int_t rows, ae_int_t cols, ae_datatype datatype, ae_state *state, ae_bool make_automatic);
855 void ae_matrix_init_copy(ae_matrix *dst, ae_matrix *src, ae_state *state, ae_bool make_automatic);
856 void ae_matrix_init_from_x(ae_matrix *dst, x_matrix *src, ae_state *state, ae_bool make_automatic);
857 void ae_matrix_init_attach_to_x(ae_matrix *dst, x_matrix *src, ae_state *state, ae_bool make_automatic);
858 void ae_matrix_set_length(ae_matrix *dst, ae_int_t rows, ae_int_t cols, ae_state *state);
859 void ae_matrix_clear(ae_matrix *dst);
860 void ae_matrix_destroy(ae_matrix *dst);
861 void ae_swap_matrices(ae_matrix *mat1, ae_matrix *mat2);
862 
863 void ae_smart_ptr_init(ae_smart_ptr *dst, void **subscriber, ae_state *state, ae_bool make_automatic);
864 void ae_smart_ptr_clear(void *_dst); /* accepts ae_smart_ptr* */
865 void ae_smart_ptr_destroy(void *_dst);
866 void ae_smart_ptr_assign(ae_smart_ptr *dst, void *new_ptr, ae_bool is_owner, ae_bool is_dynamic, void (*destroy)(void*));
867 void ae_smart_ptr_release(ae_smart_ptr *dst);
868 
869 void ae_yield();
870 void ae_init_lock(ae_lock *lock, ae_state *state, ae_bool make_automatic);
871 void ae_init_lock_eternal(ae_lock *lock);
872 void ae_acquire_lock(ae_lock *lock);
873 void ae_release_lock(ae_lock *lock);
874 void ae_free_lock(ae_lock *lock);
875 
876 void ae_shared_pool_init(void *_dst, ae_state *state, ae_bool make_automatic);
877 void ae_shared_pool_init_copy(void *_dst, void *_src, ae_state *state, ae_bool make_automatic);
878 void ae_shared_pool_clear(void *dst);
879 void ae_shared_pool_destroy(void *dst);
880 ae_bool ae_shared_pool_is_initialized(void *_dst);
881 void ae_shared_pool_set_seed(
882     ae_shared_pool  *dst,
883     void            *seed_object,
884     ae_int_t        size_of_object,
885     void            (*init)(void* dst, ae_state* state, ae_bool make_automatic),
886     void            (*init_copy)(void* dst, void* src, ae_state* state, ae_bool make_automatic),
887     void            (*destroy)(void* ptr),
888     ae_state        *state);
889 void ae_shared_pool_retrieve(
890     ae_shared_pool  *pool,
891     ae_smart_ptr    *pptr,
892     ae_state        *state);
893 void ae_shared_pool_recycle(
894     ae_shared_pool  *pool,
895     ae_smart_ptr    *pptr,
896     ae_state        *state);
897 void ae_shared_pool_clear_recycled(
898     ae_shared_pool  *pool,
899     ae_state        *state);
900 void ae_shared_pool_first_recycled(
901     ae_shared_pool  *pool,
902     ae_smart_ptr    *pptr,
903     ae_state        *state);
904 void ae_shared_pool_next_recycled(
905     ae_shared_pool  *pool,
906     ae_smart_ptr    *pptr,
907     ae_state        *state);
908 void ae_shared_pool_reset(
909     ae_shared_pool  *pool,
910     ae_state        *state);
911 
912 void ae_x_set_vector(x_vector *dst, ae_vector *src, ae_state *state);
913 void ae_x_set_matrix(x_matrix *dst, ae_matrix *src, ae_state *state);
914 void ae_x_attach_to_vector(x_vector *dst, ae_vector *src);
915 void ae_x_attach_to_matrix(x_matrix *dst, ae_matrix *src);
916 
917 void x_vector_clear(x_vector *dst);
918 
919 ae_bool x_is_symmetric(x_matrix *a);
920 ae_bool x_is_hermitian(x_matrix *a);
921 ae_bool x_force_symmetric(x_matrix *a);
922 ae_bool x_force_hermitian(x_matrix *a);
923 ae_bool ae_is_symmetric(ae_matrix *a);
924 ae_bool ae_is_hermitian(ae_matrix *a);
925 ae_bool ae_force_symmetric(ae_matrix *a);
926 ae_bool ae_force_hermitian(ae_matrix *a);
927 
928 void ae_serializer_init(ae_serializer *serializer);
929 void ae_serializer_clear(ae_serializer *serializer);
930 
931 void ae_serializer_alloc_start(ae_serializer *serializer);
932 void ae_serializer_alloc_entry(ae_serializer *serializer);
933 void ae_serializer_alloc_byte_array(ae_serializer *serializer, ae_vector *bytes);
934 ae_int_t ae_serializer_get_alloc_size(ae_serializer *serializer);
935 
936 #ifdef AE_USE_CPP_SERIALIZATION
937 void ae_serializer_sstart_str(ae_serializer *serializer, std::string *buf);
938 void ae_serializer_ustart_str(ae_serializer *serializer, const std::string *buf);
939 void ae_serializer_sstart_stream(ae_serializer *serializer, std::ostream *stream);
940 void ae_serializer_ustart_stream(ae_serializer *serializer, const std::istream *stream);
941 #endif
942 void ae_serializer_sstart_str(ae_serializer *serializer, char *buf);
943 void ae_serializer_ustart_str(ae_serializer *serializer, const char *buf);
944 void ae_serializer_sstart_stream(ae_serializer *serializer, ae_stream_writer writer, ae_int_t aux);
945 void ae_serializer_ustart_stream(ae_serializer *serializer, ae_stream_reader reader, ae_int_t aux);
946 
947 void ae_serializer_serialize_bool(ae_serializer *serializer, ae_bool v, ae_state *state);
948 void ae_serializer_serialize_int(ae_serializer *serializer, ae_int_t v, ae_state *state);
949 void ae_serializer_serialize_int64(ae_serializer *serializer, ae_int64_t v, ae_state *state);
950 void ae_serializer_serialize_double(ae_serializer *serializer, double v, ae_state *state);
951 void ae_serializer_serialize_byte_array(ae_serializer *serializer, ae_vector *bytes, ae_state *state);
952 void ae_serializer_unserialize_bool(ae_serializer *serializer, ae_bool *v, ae_state *state);
953 void ae_serializer_unserialize_int(ae_serializer *serializer, ae_int_t *v, ae_state *state);
954 void ae_serializer_unserialize_int64(ae_serializer *serializer, ae_int64_t *v, ae_state *state);
955 void ae_serializer_unserialize_double(ae_serializer *serializer, double *v, ae_state *state);
956 void ae_serializer_unserialize_byte_array(ae_serializer *serializer, ae_vector *bytes, ae_state *state);
957 
958 void ae_serializer_stop(ae_serializer *serializer, ae_state *state);
959 
960 /************************************************************************
961 Service functions
962 ************************************************************************/
963 void ae_assert(ae_bool cond, const char *msg, ae_state *state);
964 ae_int_t ae_cpuid();
965 
966 /************************************************************************
967 Real math functions:
968 * IEEE-compliant floating point comparisons
969 * standard functions
970 ************************************************************************/
971 ae_bool ae_fp_eq(double v1, double v2);
972 ae_bool ae_fp_neq(double v1, double v2);
973 ae_bool ae_fp_less(double v1, double v2);
974 ae_bool ae_fp_less_eq(double v1, double v2);
975 ae_bool ae_fp_greater(double v1, double v2);
976 ae_bool ae_fp_greater_eq(double v1, double v2);
977 
978 ae_bool ae_isfinite_stateless(double x, ae_int_t endianness);
979 ae_bool ae_isnan_stateless(double x,    ae_int_t endianness);
980 ae_bool ae_isinf_stateless(double x,    ae_int_t endianness);
981 ae_bool ae_isposinf_stateless(double x, ae_int_t endianness);
982 ae_bool ae_isneginf_stateless(double x, ae_int_t endianness);
983 
984 ae_int_t ae_get_endianness();
985 
986 ae_bool ae_isfinite(double x,ae_state *state);
987 ae_bool ae_isnan(double x,   ae_state *state);
988 ae_bool ae_isinf(double x,   ae_state *state);
989 ae_bool ae_isposinf(double x,ae_state *state);
990 ae_bool ae_isneginf(double x,ae_state *state);
991 
992 double   ae_fabs(double x,   ae_state *state);
993 ae_int_t ae_iabs(ae_int_t x, ae_state *state);
994 double   ae_sqr(double x,    ae_state *state);
995 double   ae_sqrt(double x,   ae_state *state);
996 
997 ae_int_t ae_sign(double x,   ae_state *state);
998 ae_int_t ae_round(double x,  ae_state *state);
999 ae_int_t ae_trunc(double x,  ae_state *state);
1000 ae_int_t ae_ifloor(double x, ae_state *state);
1001 ae_int_t ae_iceil(double x,  ae_state *state);
1002 
1003 ae_int_t ae_maxint(ae_int_t m1, ae_int_t m2, ae_state *state);
1004 ae_int_t ae_minint(ae_int_t m1, ae_int_t m2, ae_state *state);
1005 double   ae_maxreal(double m1, double m2, ae_state *state);
1006 double   ae_minreal(double m1, double m2, ae_state *state);
1007 double   ae_randomreal(ae_state *state);
1008 ae_int_t ae_randominteger(ae_int_t maxv, ae_state *state);
1009 
1010 double   ae_sin(double x, ae_state *state);
1011 double   ae_cos(double x, ae_state *state);
1012 double   ae_tan(double x, ae_state *state);
1013 double   ae_sinh(double x, ae_state *state);
1014 double   ae_cosh(double x, ae_state *state);
1015 double   ae_tanh(double x, ae_state *state);
1016 double   ae_asin(double x, ae_state *state);
1017 double   ae_acos(double x, ae_state *state);
1018 double   ae_atan(double x, ae_state *state);
1019 double   ae_atan2(double y, double x, ae_state *state);
1020 
1021 double   ae_log(double x, ae_state *state);
1022 double   ae_pow(double x, double y, ae_state *state);
1023 double   ae_exp(double x, ae_state *state);
1024 
1025 /************************************************************************
1026 Complex math functions:
1027 * basic arithmetic operations
1028 * standard functions
1029 ************************************************************************/
1030 ae_complex ae_complex_from_i(ae_int_t v);
1031 ae_complex ae_complex_from_d(double v);
1032 
1033 ae_complex ae_c_neg(ae_complex lhs);
1034 ae_bool ae_c_eq(ae_complex lhs,       ae_complex rhs);
1035 ae_bool ae_c_neq(ae_complex lhs,      ae_complex rhs);
1036 ae_complex ae_c_add(ae_complex lhs,   ae_complex rhs);
1037 ae_complex ae_c_mul(ae_complex lhs,   ae_complex rhs);
1038 ae_complex ae_c_sub(ae_complex lhs,   ae_complex rhs);
1039 ae_complex ae_c_div(ae_complex lhs,   ae_complex rhs);
1040 ae_bool ae_c_eq_d(ae_complex lhs,     double rhs);
1041 ae_bool ae_c_neq_d(ae_complex lhs,    double rhs);
1042 ae_complex ae_c_add_d(ae_complex lhs, double rhs);
1043 ae_complex ae_c_mul_d(ae_complex lhs, double rhs);
1044 ae_complex ae_c_sub_d(ae_complex lhs, double rhs);
1045 ae_complex ae_c_d_sub(double lhs,     ae_complex rhs);
1046 ae_complex ae_c_div_d(ae_complex lhs, double rhs);
1047 ae_complex ae_c_d_div(double lhs,   ae_complex rhs);
1048 
1049 ae_complex ae_c_conj(ae_complex lhs, ae_state *state);
1050 ae_complex ae_c_sqr(ae_complex lhs, ae_state *state);
1051 double     ae_c_abs(ae_complex z, ae_state *state);
1052 
1053 /************************************************************************
1054 Complex BLAS operations
1055 ************************************************************************/
1056 ae_complex ae_v_cdotproduct(const ae_complex *v0, ae_int_t stride0, const char *conj0, const ae_complex *v1, ae_int_t stride1, const char *conj1, ae_int_t n);
1057 void ae_v_cmove(ae_complex *vdst,    ae_int_t stride_dst, const ae_complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1058 void ae_v_cmoveneg(ae_complex *vdst, ae_int_t stride_dst, const ae_complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1059 void ae_v_cmoved(ae_complex *vdst,   ae_int_t stride_dst, const ae_complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, double alpha);
1060 void ae_v_cmovec(ae_complex *vdst,   ae_int_t stride_dst, const ae_complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, ae_complex alpha);
1061 void ae_v_cadd(ae_complex *vdst,     ae_int_t stride_dst, const ae_complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1062 void ae_v_caddd(ae_complex *vdst,    ae_int_t stride_dst, const ae_complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, double alpha);
1063 void ae_v_caddc(ae_complex *vdst,    ae_int_t stride_dst, const ae_complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, ae_complex alpha);
1064 void ae_v_csub(ae_complex *vdst,     ae_int_t stride_dst, const ae_complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1065 void ae_v_csubd(ae_complex *vdst, ae_int_t stride_dst, const ae_complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, double alpha);
1066 void ae_v_csubc(ae_complex *vdst, ae_int_t stride_dst, const ae_complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, ae_complex alpha);
1067 void ae_v_cmuld(ae_complex *vdst, ae_int_t stride_dst, ae_int_t n, double alpha);
1068 void ae_v_cmulc(ae_complex *vdst, ae_int_t stride_dst, ae_int_t n, ae_complex alpha);
1069 
1070 /************************************************************************
1071 Real BLAS operations
1072 ************************************************************************/
1073 double ae_v_dotproduct(const double *v0, ae_int_t stride0, const double *v1, ae_int_t stride1, ae_int_t n);
1074 void ae_v_move(double *vdst,    ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
1075 void ae_v_moveneg(double *vdst, ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
1076 void ae_v_moved(double *vdst,   ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1077 void ae_v_add(double *vdst,     ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
1078 void ae_v_addd(double *vdst,    ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1079 void ae_v_sub(double *vdst,     ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
1080 void ae_v_subd(double *vdst,    ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1081 void ae_v_muld(double *vdst,  ae_int_t stride_dst, ae_int_t n, double alpha);
1082 
1083 /************************************************************************
1084 Other functions
1085 ************************************************************************/
1086 ae_int_t ae_v_len(ae_int_t a, ae_int_t b);
1087 
1088 /*
1089 extern const double ae_machineepsilon;
1090 extern const double ae_maxrealnumber;
1091 extern const double ae_minrealnumber;
1092 extern const double ae_pi;
1093 */
1094 #define ae_machineepsilon 5E-16
1095 #define ae_maxrealnumber  1E300
1096 #define ae_minrealnumber  1E-300
1097 #define ae_pi 3.1415926535897932384626433832795
1098 
1099 
1100 /************************************************************************
1101 RComm functions
1102 ************************************************************************/
1103 typedef struct rcommstate
1104 {
1105     int stage;
1106     ae_vector ia;
1107     ae_vector ba;
1108     ae_vector ra;
1109     ae_vector ca;
1110 } rcommstate;
1111 void _rcommstate_init(rcommstate* p, ae_state *_state, ae_bool make_automatic);
1112 void _rcommstate_init_copy(rcommstate* dst, rcommstate* src, ae_state *_state, ae_bool make_automatic);
1113 void _rcommstate_clear(rcommstate* p);
1114 void _rcommstate_destroy(rcommstate* p);
1115 
1116 
1117 /************************************************************************
1118 Allocation counters, inactive by default.
1119 Turned on when needed for debugging purposes.
1120 
1121 _alloc_counter is incremented by 1 on malloc(), decremented on free().
1122 _alloc_counter_total is only incremented by 1.
1123 ************************************************************************/
1124 extern ae_int_t   _alloc_counter;
1125 extern ae_int_t   _alloc_counter_total;
1126 extern ae_bool    _use_alloc_counter;
1127 
1128 
1129 /************************************************************************
1130 Malloc debugging:
1131 
1132 * _force_malloc_failure - set this flag to ae_true in  order  to  enforce
1133   failure of ALGLIB malloc(). Useful to debug handling of  errors  during
1134   memory allocation. As long as this flag is set, ALGLIB malloc will fail.
1135 * _malloc_failure_after - set it to non-zero value in  order  to  enforce
1136   malloc failure as soon as _alloc_counter_total increases above value of
1137   this variable. This value has no effect if  _use_alloc_counter  is  not
1138   set.
1139 ************************************************************************/
1140 extern ae_bool    _force_malloc_failure;
1141 extern ae_int_t   _malloc_failure_after;
1142 
1143 
1144 /************************************************************************
1145 Trace file descriptor (to be used by ALGLIB code which sends messages  to
1146 trace log)
1147 ************************************************************************/
1148 extern FILE       *alglib_trace_file;
1149 
1150 
1151 /************************************************************************
1152 debug functions (must be turned on by preprocessor definitions):
1153 * flushconsole(), fluches console
1154 * ae_debugrng(), returns random number generated with high-quality random numbers generator
1155 * ae_set_seed(), sets seed of the debug RNG (NON-THREAD-SAFE!!!)
1156 * ae_get_seed(), returns two seed values of the debug RNG (NON-THREAD-SAFE!!!)
1157 ************************************************************************/
1158 #ifdef AE_DEBUG4WINDOWS
1159 #define flushconsole(s) fflush(stdout)
1160 #endif
1161 #ifdef AE_DEBUG4POSIX
1162 #define flushconsole(s) fflush(stdout)
1163 #endif
1164 
1165 /************************************************************************
1166 Internal macros, defined only when _ALGLIB_IMPL_DEFINES is defined before
1167 inclusion of this header file
1168 ************************************************************************/
1169 #if defined(_ALGLIB_IMPL_DEFINES)
1170     #define _ALGLIB_SIMD_ALIGNMENT_DOUBLES 8
1171     #define _ALGLIB_SIMD_ALIGNMENT_BYTES   (_ALGLIB_SIMD_ALIGNMENT_DOUBLES*8)
1172     /*
1173      * SIMD kernel dispatchers
1174      */
1175     #if defined(_ALGLIB_HAS_SSE2_INTRINSICS)
1176         #define _ALGLIB_KKK_VOID_SSE2(fname,params)   if( cached_cpuid&CPU_SSE2 ) { fname##_sse2 params; return; }
1177         #define _ALGLIB_KKK_RETURN_SSE2(fname,params) if( cached_cpuid&CPU_SSE2 ) { return fname##_sse2 params; }
1178     #else
1179         #define _ALGLIB_KKK_VOID_SSE2(fname,params)
1180         #define _ALGLIB_KKK_RETURN_SSE2(fname,params)
1181     #endif
1182     #if defined(_ALGLIB_HAS_AVX2_INTRINSICS)
1183         #define _ALGLIB_KKK_VOID_AVX2(fname,params)   if( cached_cpuid&CPU_AVX2 ) { fname##_avx2 params; return; }
1184         #define _ALGLIB_KKK_RETURN_AVX2(fname,params) if( cached_cpuid&CPU_AVX2 ) { return fname##_avx2 params; }
1185     #else
1186         #define _ALGLIB_KKK_VOID_AVX2(fname,params)
1187         #define _ALGLIB_KKK_RETURN_AVX2(fname,params)
1188     #endif
1189     #if defined(_ALGLIB_HAS_FMA_INTRINSICS)
1190         #define _ALGLIB_KKK_VOID_FMA(fname,params)    if( cached_cpuid&CPU_FMA )  { fname##_fma params; return; }
1191         #define _ALGLIB_KKK_RETURN_FMA(fname,params)  if( cached_cpuid&CPU_FMA )  { return fname##_fma params; }
1192     #else
1193         #define _ALGLIB_KKK_VOID_FMA(fname,params)
1194         #define _ALGLIB_KKK_RETURN_FMA(fname,params)
1195     #endif
1196 
1197     #if defined(_ALGLIB_HAS_SSE2_INTRINSICS) || defined(_ALGLIB_HAS_AVX2_INTRINSICS)
1198         #define _ALGLIB_KERNEL_VOID_SSE2_AVX2(fname,params) \
1199         {\
1200             ae_int_t cached_cpuid = ae_cpuid();\
1201             _ALGLIB_KKK_VOID_AVX2(fname,params)\
1202             _ALGLIB_KKK_VOID_SSE2(fname,params)\
1203         }
1204         #define _ALGLIB_KERNEL_RETURN_SSE2_AVX2(fname,params) \
1205         {\
1206             ae_int_t cached_cpuid = ae_cpuid();\
1207             _ALGLIB_KKK_RETURN_AVX2(fname,params)\
1208             _ALGLIB_KKK_RETURN_SSE2(fname,params)\
1209         }
1210     #else
1211         #define _ALGLIB_KERNEL_VOID_SSE2_AVX2(fname,params)   {}
1212         #define _ALGLIB_KERNEL_RETURN_SSE2_AVX2(fname,params) {}
1213     #endif
1214 
1215     #if defined(_ALGLIB_HAS_SSE2_INTRINSICS) || defined(_ALGLIB_HAS_AVX2_INTRINSICS) || defined(_ALGLIB_HAS_FMA_INTRINSICS)
1216         #define _ALGLIB_KERNEL_VOID_SSE2_AVX2_FMA(fname,params) \
1217         {\
1218             ae_int_t cached_cpuid = ae_cpuid();\
1219             _ALGLIB_KKK_VOID_FMA(fname,params)\
1220             _ALGLIB_KKK_VOID_AVX2(fname,params)\
1221             _ALGLIB_KKK_VOID_SSE2(fname,params)\
1222         }
1223         #define _ALGLIB_KERNEL_RETURN_SSE2_AVX2_FMA(fname,params) \
1224         {\
1225             ae_int_t cached_cpuid = ae_cpuid();\
1226             _ALGLIB_KKK_RETURN_FMA(fname,params)\
1227             _ALGLIB_KKK_RETURN_AVX2(fname,params)\
1228             _ALGLIB_KKK_RETURN_SSE2(fname,params)\
1229         }
1230     #else
1231         #define _ALGLIB_KERNEL_VOID_SSE2_AVX2_FMA(fname,params)   {}
1232         #define _ALGLIB_KERNEL_RETURN_SSE2_AVX2_FMA(fname,params) {}
1233     #endif
1234 
1235     #if defined(_ALGLIB_HAS_AVX2_INTRINSICS) || defined(_ALGLIB_HAS_FMA_INTRINSICS)
1236         #define _ALGLIB_KERNEL_VOID_AVX2_FMA(fname,params) \
1237         {\
1238             ae_int_t cached_cpuid = ae_cpuid();\
1239             _ALGLIB_KKK_VOID_FMA(fname,params)\
1240             _ALGLIB_KKK_VOID_AVX2(fname,params)\
1241         }
1242         #define _ALGLIB_KERNEL_RETURN_AVX2_FMA(fname,params) \
1243         {\
1244             ae_int_t cached_cpuid = ae_cpuid();\
1245             _ALGLIB_KKK_RETURN_FMA(fname,params)\
1246             _ALGLIB_KKK_RETURN_AVX2(fname,params)\
1247         }
1248     #else
1249         #define _ALGLIB_KERNEL_VOID_AVX2_FMA(fname,params) {}
1250         #define _ALGLIB_KERNEL_RETURN_AVX2_FMA(fname,params) {}
1251     #endif
1252 
1253     #if defined(_ALGLIB_HAS_AVX2_INTRINSICS)
1254         #define _ALGLIB_KERNEL_VOID_AVX2(fname,params) \
1255         {\
1256             ae_int_t cached_cpuid = ae_cpuid();\
1257             _ALGLIB_KKK_VOID_AVX2(fname,params)\
1258         }
1259         #define _ALGLIB_KERNEL_RETURN_AVX2(fname,params) \
1260         {\
1261             ae_int_t cached_cpuid = ae_cpuid();\
1262             _ALGLIB_KKK_RETURN_AVX2(fname,params)\
1263         }
1264     #else
1265         #define _ALGLIB_KERNEL_VOID_AVX2(fname,params) {}
1266         #define _ALGLIB_KERNEL_RETURN_AVX2(fname,params) {}
1267     #endif
1268 
1269     #ifdef FP_FAST_FMA
1270         #define APPROX_FMA(x, y, z) fma((x), (y), (z))
1271     #else
1272         #define APPROX_FMA(x, y, z) ((x)*(y) + (z))
1273     #endif
1274 
1275 #endif
1276 
1277 
1278 }
1279 
1280 
1281 /////////////////////////////////////////////////////////////////////////
1282 //
1283 // THIS SECTION CONTAINS DECLARATIONS FOR C++ RELATED FUNCTIONALITY
1284 //
1285 /////////////////////////////////////////////////////////////////////////
1286 
1287 namespace alglib
1288 {
1289 
1290 typedef alglib_impl::ae_int_t ae_int_t;
1291 
1292 /********************************************************************
1293 Class forwards
1294 ********************************************************************/
1295 class complex;
1296 
1297 ae_int_t vlen(ae_int_t n1, ae_int_t n2);
1298 
1299 /********************************************************************
1300 Exception class.
1301 ********************************************************************/
1302 #if !defined(AE_NO_EXCEPTIONS)
1303 class ap_error
1304 {
1305 public:
1306     std::string msg;
1307 
1308     ap_error();
1309     ap_error(const char *s);
1310     static void make_assertion(bool bClause);
1311     static void make_assertion(bool bClause, const char *p_msg);
1312 private:
1313 };
1314 #endif
1315 
1316 /********************************************************************
1317 Complex number with double precision.
1318 ********************************************************************/
1319 class complex
1320 {
1321 public:
1322     complex();
1323     complex(const double &_x);
1324     complex(const double &_x, const double &_y);
1325     complex(const complex &z);
1326 
1327     complex& operator= (const double& v);
1328     complex& operator+=(const double& v);
1329     complex& operator-=(const double& v);
1330     complex& operator*=(const double& v);
1331     complex& operator/=(const double& v);
1332 
1333     complex& operator= (const complex& z);
1334     complex& operator+=(const complex& z);
1335     complex& operator-=(const complex& z);
1336     complex& operator*=(const complex& z);
1337     complex& operator/=(const complex& z);
1338 
1339     alglib_impl::ae_complex*       c_ptr();
1340     const alglib_impl::ae_complex* c_ptr() const;
1341 
1342 #if !defined(AE_NO_EXCEPTIONS)
1343     std::string tostring(int dps) const;
1344 #endif
1345 
1346     double x, y;
1347 };
1348 
1349 const alglib::complex operator/(const alglib::complex& lhs, const alglib::complex& rhs);
1350 bool operator==(const alglib::complex& lhs, const alglib::complex& rhs);
1351 bool operator!=(const alglib::complex& lhs, const alglib::complex& rhs);
1352 const alglib::complex operator+(const alglib::complex& lhs);
1353 const alglib::complex operator-(const alglib::complex& lhs);
1354 const alglib::complex operator+(const alglib::complex& lhs, const alglib::complex& rhs);
1355 const alglib::complex operator+(const alglib::complex& lhs, const double& rhs);
1356 const alglib::complex operator+(const double& lhs, const alglib::complex& rhs);
1357 const alglib::complex operator-(const alglib::complex& lhs, const alglib::complex& rhs);
1358 const alglib::complex operator-(const alglib::complex& lhs, const double& rhs);
1359 const alglib::complex operator-(const double& lhs, const alglib::complex& rhs);
1360 const alglib::complex operator*(const alglib::complex& lhs, const alglib::complex& rhs);
1361 const alglib::complex operator*(const alglib::complex& lhs, const double& rhs);
1362 const alglib::complex operator*(const double& lhs, const alglib::complex& rhs);
1363 const alglib::complex operator/(const alglib::complex& lhs, const alglib::complex& rhs);
1364 const alglib::complex operator/(const double& lhs, const alglib::complex& rhs);
1365 const alglib::complex operator/(const alglib::complex& lhs, const double& rhs);
1366 double abscomplex(const alglib::complex &z);
1367 alglib::complex conj(const alglib::complex &z);
1368 alglib::complex csqr(const alglib::complex &z);
1369 
1370 /********************************************************************
1371 Level 1 BLAS functions
1372 
1373 NOTES:
1374 * destination and source should NOT overlap
1375 * stride is assumed to be positive, but it is not
1376   assert'ed within function
1377 * conj_src parameter specifies whether complex source is conjugated
1378   before processing or not. Pass string which starts with 'N' or 'n'
1379   ("No conj", for example) to use unmodified parameter. All other
1380   values will result in conjugation of input, but it is recommended
1381   to use "Conj" in such cases.
1382 ********************************************************************/
1383 double vdotproduct(const double *v0, ae_int_t stride0, const double *v1, ae_int_t stride1, ae_int_t n);
1384 double vdotproduct(const double *v1, const double *v2, ae_int_t N);
1385 
1386 alglib::complex vdotproduct(const alglib::complex *v0, ae_int_t stride0, const char *conj0, const alglib::complex *v1, ae_int_t stride1, const char *conj1, ae_int_t n);
1387 alglib::complex vdotproduct(const alglib::complex *v1, const alglib::complex *v2, ae_int_t N);
1388 
1389 void vmove(double *vdst,  ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
1390 void vmove(double *vdst, const double* vsrc, ae_int_t N);
1391 
1392 void vmove(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1393 void vmove(alglib::complex *vdst, const alglib::complex* vsrc, ae_int_t N);
1394 
1395 void vmoveneg(double *vdst,  ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
1396 void vmoveneg(double *vdst, const double *vsrc, ae_int_t N);
1397 
1398 void vmoveneg(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1399 void vmoveneg(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N);
1400 
1401 void vmove(double *vdst,  ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1402 void vmove(double *vdst, const double *vsrc, ae_int_t N, double alpha);
1403 
1404 void vmove(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, double alpha);
1405 void vmove(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, double alpha);
1406 
1407 void vmove(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex* vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, alglib::complex alpha);
1408 void vmove(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, alglib::complex alpha);
1409 
1410 void vadd(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
1411 void vadd(double *vdst, const double *vsrc, ae_int_t N);
1412 
1413 void vadd(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1414 void vadd(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N);
1415 
1416 void vadd(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1417 void vadd(double *vdst, const double *vsrc, ae_int_t N, double alpha);
1418 
1419 void vadd(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, double alpha);
1420 void vadd(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, double alpha);
1421 
1422 void vadd(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, alglib::complex alpha);
1423 void vadd(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, alglib::complex alpha);
1424 
1425 void vsub(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
1426 void vsub(double *vdst, const double *vsrc, ae_int_t N);
1427 
1428 void vsub(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n);
1429 void vsub(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N);
1430 
1431 void vsub(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1432 void vsub(double *vdst, const double *vsrc, ae_int_t N, double alpha);
1433 
1434 void vsub(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, double alpha);
1435 void vsub(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, double alpha);
1436 
1437 void vsub(alglib::complex *vdst, ae_int_t stride_dst, const alglib::complex *vsrc, ae_int_t stride_src, const char *conj_src, ae_int_t n, alglib::complex alpha);
1438 void vsub(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, alglib::complex alpha);
1439 
1440 void vmul(double *vdst,  ae_int_t stride_dst, ae_int_t n, double alpha);
1441 void vmul(double *vdst, ae_int_t N, double alpha);
1442 
1443 void vmul(alglib::complex *vdst, ae_int_t stride_dst, ae_int_t n, double alpha);
1444 void vmul(alglib::complex *vdst, ae_int_t N, double alpha);
1445 
1446 void vmul(alglib::complex *vdst, ae_int_t stride_dst, ae_int_t n, alglib::complex alpha);
1447 void vmul(alglib::complex *vdst, ae_int_t N, alglib::complex alpha);
1448 
1449 
1450 /********************************************************************
1451 xparams type and several predefined constants
1452 ********************************************************************/
1453 struct xparams
1454 {
1455     alglib_impl::ae_uint64_t flags;
1456 };
1457 
1458 extern const xparams &xdefault;
1459 extern const xparams &serial;
1460 extern const xparams &parallel;
1461 
1462 /********************************************************************
1463 Threading functions
1464 ********************************************************************/
1465 // nworkers can be 1, 2, ... ; or 0 for auto; or -1/-2/... for all except for one/two/...
1466 void setnworkers(alglib::ae_int_t nworkers);
1467 
1468 // sets global threading settings to alglib::serial or alglib::parallel
1469 void setglobalthreading(const xparams settings);
1470 
1471 // nworkers can be 1, 2, ... ; or 0 for auto; or -1/-2/... for all except for one/two/...
1472 alglib::ae_int_t getnworkers();
1473 
1474 /********************************************************************
1475 internal functions used by test_x.cpp, interfaces for functions present
1476 in commercial ALGLIB but lacking in free edition.
1477 ********************************************************************/
1478 ae_int_t _ae_cores_count();
1479 void _ae_set_global_threading(alglib_impl::ae_uint64_t flg_value);
1480 alglib_impl::ae_uint64_t _ae_get_global_threading();
1481 
1482 /********************************************************************
1483 1- and 2-dimensional arrays
1484 ********************************************************************/
1485 class ae_vector_wrapper
1486 {
1487 public:
1488     //
1489     // Creates object attached to external ae_vector structure.
1490     //
1491     // NOTE: this function also checks that source ae_vector* has
1492     //       required datatype. An exception is generated otherwise.
1493     //
1494     ae_vector_wrapper(alglib_impl::ae_vector *e_ptr, alglib_impl::ae_datatype datatype);
1495 
1496     //
1497     // Creates zero-size vector of specific datatype
1498     //
1499     ae_vector_wrapper(alglib_impl::ae_datatype datatype);
1500 
1501     //
1502     // Creates a copy of another vector (can be reference to one of the derived classes)
1503     //
1504     // NOTE: this function also checks that source ae_vector* has
1505     //       required datatype. An exception is generated otherwise.
1506     //
1507     ae_vector_wrapper(const ae_vector_wrapper &rhs, alglib_impl::ae_datatype datatype);
1508 
1509     //
1510     // Well, it is destructor...
1511     //
1512     virtual ~ae_vector_wrapper();
1513 
1514     //
1515     // For wrapper object allocated with allocate_own() this function
1516     // changes length, completely dropping previous contents.
1517     //
1518     // It does not work (throws exception) for frozen proxy objects.
1519     //
1520     void setlength(ae_int_t iLen);
1521 
1522     //
1523     // Element count
1524     //
1525     ae_int_t length() const;
1526 
1527     //
1528     // Access to internal C-structure used by C-core.
1529     // Not intended for external use.
1530     //
1531     const alglib_impl::ae_vector* c_ptr() const;
1532     alglib_impl::ae_vector* c_ptr();
1533 private:
1534     ae_vector_wrapper();
1535     ae_vector_wrapper(const ae_vector_wrapper &rhs);
1536     const ae_vector_wrapper& operator=(const ae_vector_wrapper &rhs);
1537 protected:
1538 #if !defined(AE_NO_EXCEPTIONS)
1539     //
1540     // Copies array given by string into current object. Additional
1541     // parameter DATATYPE contains information about type of the data
1542     // in S and type of the array to create.
1543     //
1544     // NOTE: this function is not supported in exception-free mode.
1545     //
1546     ae_vector_wrapper(const char *s, alglib_impl::ae_datatype datatype);
1547 #endif
1548 
1549     //
1550     // This function attaches wrapper object to external x_vector structure;
1551     // "frozen proxy" mode is activated (you can read/write, but can not reallocate
1552     // and do not own memory of the vector).
1553     //
1554     // NOTE: initial state of wrapper object is assumed to be initialized;
1555     //       all previously allocated memory is properly deallocated.
1556     //
1557     // NOTE: x_vector structure pointed by new_ptr is used only once; after
1558     //       we fetch pointer to memory and its size, this structure is ignored
1559     //       and not referenced anymore. So, you can pass pointers to temporary
1560     //       x-structures which are deallocated immediately after you call attach_to()
1561     //
1562     // NOTE: state structure is used for error reporting purposes (longjmp on errors).
1563     //
1564     void attach_to(alglib_impl::x_vector *new_ptr, alglib_impl::ae_state *_state);
1565 
1566     //
1567     // Assigns RHS to current object. Returns *this.
1568     //
1569     // It has several branches depending on target object status:
1570     // * in case it is proxy object, data are copied into memory pointed by
1571     //   proxy. Function checks that source has exactly same size as target
1572     //   (exception is thrown on failure).
1573     // * in case it is non-proxy object, data allocated by object are cleared
1574     //   and a copy of RHS is created in target.
1575     //
1576     // NOTE: this function correctly handles assignments of the object to itself.
1577     //
1578     const ae_vector_wrapper& assign(const ae_vector_wrapper &rhs);
1579 
1580     //
1581     // Pointer to ae_vector structure:
1582     // * ptr==&inner_vec means that wrapper object owns ae_vector structure and
1583     //   is responsible for proper deallocation of its memory
1584     // * ptr!=&inner_vec means that wrapper object works with someone's other
1585     //   ae_vector record and is not responsible for its memory; in this case
1586     //   inner_vec is assumed to be uninitialized.
1587     //
1588     alglib_impl::ae_vector *ptr;
1589 
1590     //
1591     // Inner ae_vector record.
1592     // Ignored for ptr!=&inner_rec.
1593     //
1594     alglib_impl::ae_vector inner_vec;
1595 
1596     //
1597     // Whether this wrapper object is frozen proxy (you may read array, may
1598     // modify its value, but can not deallocate its memory or resize it) or not.
1599     //
1600     // If is_frozen_proxy==true and if:
1601     // * ptr==&inner_vec, it means that wrapper works with its own ae_vector
1602     //   structure, but this structure points to externally allocated memory.
1603     //   This memory is NOT owned by ae_vector object.
1604     // * ptr!=&inner_vec, it means that wrapper works with externally allocated
1605     //   and managed ae_vector structure. Both memory pointed by ae_vector and
1606     //   ae_vector structure itself are not owned by wrapper object.
1607     //
1608     bool                   is_frozen_proxy;
1609 };
1610 
1611 class boolean_1d_array : public ae_vector_wrapper
1612 {
1613 public:
1614     boolean_1d_array();
1615     boolean_1d_array(const boolean_1d_array &rhs);
1616     boolean_1d_array(alglib_impl::ae_vector *p);
1617     const boolean_1d_array& operator=(const boolean_1d_array &rhs);
1618     virtual ~boolean_1d_array() ;
1619 
1620     const ae_bool& operator()(ae_int_t i) const;
1621     ae_bool& operator()(ae_int_t i);
1622 
1623     const ae_bool& operator[](ae_int_t i) const;
1624     ae_bool& operator[](ae_int_t i);
1625 
1626     //
1627     // This function allocates array[iLen] and copies data
1628     // pointed by pContent to its memory. Completely independent
1629     // copy of data is created.
1630     //
1631     void setcontent(ae_int_t iLen, const bool *pContent );
1632 
1633     //
1634     // This function returns pointer to internal memory
1635     //
1636     ae_bool* getcontent();
1637     const ae_bool* getcontent() const;
1638 
1639 #if !defined(AE_NO_EXCEPTIONS)
1640     boolean_1d_array(const char *s);
1641     std::string tostring() const;
1642 #endif
1643 };
1644 
1645 class integer_1d_array : public ae_vector_wrapper
1646 {
1647 public:
1648     integer_1d_array();
1649     integer_1d_array(const integer_1d_array &rhs);
1650     integer_1d_array(alglib_impl::ae_vector *p);
1651     const integer_1d_array& operator=(const integer_1d_array &rhs);
1652     virtual ~integer_1d_array();
1653 
1654     const ae_int_t& operator()(ae_int_t i) const;
1655     ae_int_t& operator()(ae_int_t i);
1656 
1657     const ae_int_t& operator[](ae_int_t i) const;
1658     ae_int_t& operator[](ae_int_t i);
1659 
1660     //
1661     // This function allocates array[iLen] and copies data
1662     // pointed by pContent to its memory. Completely independent
1663     // copy of data is created.
1664     //
1665     void setcontent(ae_int_t iLen, const ae_int_t *pContent );
1666 
1667     //
1668     // This function returns pointer to internal memory
1669     //
1670     ae_int_t* getcontent();
1671     const ae_int_t* getcontent() const;
1672 
1673 #if !defined(AE_NO_EXCEPTIONS)
1674     integer_1d_array(const char *s);
1675     std::string tostring() const;
1676 #endif
1677 };
1678 
1679 class real_1d_array : public ae_vector_wrapper
1680 {
1681 public:
1682     real_1d_array();
1683     real_1d_array(const real_1d_array &rhs);
1684     real_1d_array(alglib_impl::ae_vector *p);
1685     const real_1d_array& operator=(const real_1d_array &rhs);
1686     virtual ~real_1d_array();
1687 
1688     const double& operator()(ae_int_t i) const;
1689     double& operator()(ae_int_t i);
1690 
1691     const double& operator[](ae_int_t i) const;
1692     double& operator[](ae_int_t i);
1693 
1694     //
1695     // This function allocates array[iLen] and copies data
1696     // pointed by pContent to its memory. Completely independent
1697     // copy of data is created.
1698     //
1699     void setcontent(ae_int_t iLen, const double *pContent);
1700 
1701     //
1702     // This function attaches array to memory pointed by pContent.
1703     // No own memory is allocated, no copying of data is performed,
1704     // so pContent pointer should be valid as long as we work with
1705     // array.
1706     //
1707     // After you attach array object to external memory, it becomes
1708     // "frozen": it is possible to read/write array elements, but
1709     // it is not allowed to resize it (no setlength() calls).
1710     //
1711     void attach_to_ptr(ae_int_t iLen, double *pContent);
1712 
1713     //
1714     // This function returns pointer to internal memory
1715     //
1716     double* getcontent();
1717     const double* getcontent() const;
1718 
1719 #if !defined(AE_NO_EXCEPTIONS)
1720     real_1d_array(const char *s);
1721     std::string tostring(int dps) const;
1722 #endif
1723 };
1724 
1725 class complex_1d_array : public ae_vector_wrapper
1726 {
1727 public:
1728     complex_1d_array();
1729     complex_1d_array(const complex_1d_array &rhs);
1730     complex_1d_array(alglib_impl::ae_vector *p);
1731     const complex_1d_array& operator=(const complex_1d_array &rhs);
1732     virtual ~complex_1d_array();
1733 
1734     const alglib::complex& operator()(ae_int_t i) const;
1735     alglib::complex& operator()(ae_int_t i);
1736 
1737     const alglib::complex& operator[](ae_int_t i) const;
1738     alglib::complex& operator[](ae_int_t i);
1739 
1740     //
1741     // This function allocates array[iLen] and copies data
1742     // pointed by pContent to its memory. Completely independent
1743     // copy of data is created.
1744     //
1745     void setcontent(ae_int_t iLen, const alglib::complex *pContent );
1746     alglib::complex* getcontent();
1747     const alglib::complex* getcontent() const;
1748 
1749 #if !defined(AE_NO_EXCEPTIONS)
1750     complex_1d_array(const char *s);
1751     std::string tostring(int dps) const;
1752 #endif
1753 };
1754 
1755 class ae_matrix_wrapper
1756 {
1757 public:
1758     //
1759     // Creates object attached to external ae_vector structure, with additional
1760     // check for matching datatypes (e_ptr->datatype==datatype is required).
1761     //
1762     ae_matrix_wrapper(alglib_impl::ae_matrix *e_ptr, alglib_impl::ae_datatype datatype);
1763 
1764     //
1765     // Creates zero-sized matrix of specified datatype.
1766     //
1767     ae_matrix_wrapper(alglib_impl::ae_datatype datatype);
1768 
1769     //
1770     // Creates copy of rhs, with additional check for matching datatypes
1771     // (rhs.datatype==datatype is required).
1772     //
1773     ae_matrix_wrapper(const ae_matrix_wrapper &rhs, alglib_impl::ae_datatype datatype);
1774 
1775     //
1776     // Destructor
1777     //
1778     virtual ~ae_matrix_wrapper();
1779 
1780 
1781     void setlength(ae_int_t rows, ae_int_t cols);
1782     ae_int_t rows() const;
1783     ae_int_t cols() const;
1784     bool isempty() const;
1785 	ae_int_t getstride() const;
1786 
1787     const alglib_impl::ae_matrix* c_ptr() const;
1788     alglib_impl::ae_matrix* c_ptr();
1789 private:
1790     ae_matrix_wrapper();
1791     ae_matrix_wrapper(const ae_matrix_wrapper &rhs);
1792     const ae_matrix_wrapper& operator=(const ae_matrix_wrapper &rhs);
1793 protected:
1794 #if !defined(AE_NO_EXCEPTIONS)
1795     //
1796     // Copies array given by string into current object. Additional
1797     // parameter DATATYPE contains information about type of the data
1798     // in S and type of the array to create.
1799     //
1800     // Current object is considered empty (this function should be
1801     // called from copy constructor).
1802     //
1803     ae_matrix_wrapper(const char *s, alglib_impl::ae_datatype datatype);
1804 #endif
1805 
1806     //
1807     // This function attaches wrapper object to external x_vector structure;
1808     // "frozen proxy" mode is activated (you can read/write, but can not reallocate
1809     // and do not own memory of the vector).
1810     //
1811     // NOTE: initial state of wrapper object is assumed to be initialized;
1812     //       all previously allocated memory is properly deallocated.
1813     //
1814     // NOTE: x_vector structure pointed by new_ptr is used only once; after
1815     //       we fetch pointer to memory and its size, this structure is ignored
1816     //       and not referenced anymore. So, you can pass pointers to temporary
1817     //       x-structures which are deallocated immediately after you call attach_to()
1818     //
1819     // NOTE: state structure is used for error-handling (a longjmp is performed
1820     //       on allocation error). All previously allocated memory is correctly
1821     //       freed on error.
1822     //
1823     void attach_to(alglib_impl::x_matrix *new_ptr, alglib_impl::ae_state *_state);
1824 
1825     //
1826     // This function initializes matrix and allocates own memory storage.
1827     //
1828     // NOTE: initial state of wrapper object is assumed to be uninitialized;
1829     //       if ptr!=NULL on entry, it is considered critical error (abort is called).
1830     //
1831     void init(ae_int_t rows, ae_int_t cols, alglib_impl::ae_datatype datatype, alglib_impl::ae_state *_state);
1832 
1833     //
1834     // Assigns RHS to current object.
1835     //
1836     // It has several branches depending on target object status:
1837     // * in case it is proxy object, data are copied into memory pointed by
1838     //   proxy. Function checks that source has exactly same size as target
1839     //   (exception is thrown on failure).
1840     // * in case it is non-proxy object, data allocated by object are cleared
1841     //   and a copy of RHS is created in target.
1842     //
1843     // NOTE: this function correctly handles assignments of the object to itself.
1844     //
1845     const ae_matrix_wrapper & assign(const ae_matrix_wrapper &rhs);
1846 
1847 
1848     //
1849     // Pointer to ae_matrix structure:
1850     // * ptr==&inner_mat means that wrapper object owns ae_matrix structure and
1851     //   is responsible for proper deallocation of its memory
1852     // * ptr!=&inner_mat means that wrapper object works with someone's other
1853     //   ae_matrix record and is not responsible for its memory; in this case
1854     //   inner_mat is assumed to be uninitialized.
1855     //
1856     alglib_impl::ae_matrix *ptr;
1857 
1858     //
1859     // Inner ae_matrix record.
1860     // Ignored for ptr!=&inner_mat.
1861     //
1862     alglib_impl::ae_matrix inner_mat;
1863 
1864     //
1865     // Whether this wrapper object is frozen proxy (you may read array, may
1866     // modify its value, but can not deallocate its memory or resize it) or not.
1867     //
1868     // If is_frozen_proxy==true and if:
1869     // * ptr==&inner_vec, it means that wrapper works with its own ae_vector
1870     //   structure, but this structure points to externally allocated memory.
1871     //   This memory is NOT owned by ae_vector object.
1872     // * ptr!=&inner_vec, it means that wrapper works with externally allocated
1873     //   and managed ae_vector structure. Both memory pointed by ae_vector and
1874     //   ae_vector structure itself are not owned by wrapper object.
1875     //
1876     bool                   is_frozen_proxy;
1877 };
1878 
1879 class boolean_2d_array : public ae_matrix_wrapper
1880 {
1881 public:
1882     boolean_2d_array();
1883     boolean_2d_array(const boolean_2d_array &rhs);
1884     boolean_2d_array(alglib_impl::ae_matrix *p);
1885     virtual ~boolean_2d_array();
1886 
1887     const boolean_2d_array& operator=(const boolean_2d_array &rhs);
1888 
1889     const ae_bool& operator()(ae_int_t i, ae_int_t j) const;
1890     ae_bool& operator()(ae_int_t i, ae_int_t j);
1891 
1892     const ae_bool* operator[](ae_int_t i) const;
1893     ae_bool* operator[](ae_int_t i);
1894 
1895     //
1896     // This function allocates array[irows,icols] and copies data
1897     // pointed by pContent to its memory. Completely independent
1898     // copy of data is created.
1899     //
1900     void setcontent(ae_int_t irows, ae_int_t icols, const bool *pContent );
1901 
1902 #if !defined(AE_NO_EXCEPTIONS)
1903     boolean_2d_array(const char *s);
1904     std::string tostring() const ;
1905 #endif
1906 };
1907 
1908 class integer_2d_array : public ae_matrix_wrapper
1909 {
1910 public:
1911     integer_2d_array();
1912     integer_2d_array(const integer_2d_array &rhs);
1913     integer_2d_array(alglib_impl::ae_matrix *p);
1914     virtual ~integer_2d_array();
1915 
1916     const integer_2d_array& operator=(const integer_2d_array &rhs);
1917 
1918     const ae_int_t& operator()(ae_int_t i, ae_int_t j) const;
1919     ae_int_t& operator()(ae_int_t i, ae_int_t j);
1920 
1921     const ae_int_t* operator[](ae_int_t i) const;
1922     ae_int_t* operator[](ae_int_t i);
1923 
1924     //
1925     // This function allocates array[irows,icols] and copies data
1926     // pointed by pContent to its memory. Completely independent
1927     // copy of data is created.
1928     //
1929     void setcontent(ae_int_t irows, ae_int_t icols, const ae_int_t *pContent );
1930 
1931 
1932 #if !defined(AE_NO_EXCEPTIONS)
1933     integer_2d_array(const char *s);
1934     std::string tostring() const;
1935 #endif
1936 };
1937 
1938 class real_2d_array : public ae_matrix_wrapper
1939 {
1940 public:
1941     real_2d_array();
1942     real_2d_array(const real_2d_array &rhs);
1943     real_2d_array(alglib_impl::ae_matrix *p);
1944     virtual ~real_2d_array();
1945 
1946     const real_2d_array& operator=(const real_2d_array &rhs);
1947 
1948     const double& operator()(ae_int_t i, ae_int_t j) const;
1949     double& operator()(ae_int_t i, ae_int_t j);
1950 
1951     const double* operator[](ae_int_t i) const;
1952     double* operator[](ae_int_t i);
1953 
1954     //
1955     // This function allocates array[irows,icols] and copies data
1956     // pointed by pContent to its memory. Completely independent
1957     // copy of data is created.
1958     //
1959     void setcontent(ae_int_t irows, ae_int_t icols, const double *pContent);
1960 
1961     //
1962     // This function attaches array to memory pointed by pContent:
1963     // * only minor amount of own memory is allocated - O(irows) bytes to
1964     //   store precomputed pointers; but no costly copying of O(rows*cols)
1965     //   data is performed.
1966     // * pContent pointer should be valid as long as we work with array
1967     //
1968     // After you attach array object to external memory, it becomes
1969     // "frozen": it is possible to read/write array elements, but
1970     // it is not allowed to resize it (no setlength() calls).
1971     //
1972     void attach_to_ptr(ae_int_t irows, ae_int_t icols, double *pContent);
1973 
1974 #if !defined(AE_NO_EXCEPTIONS)
1975     real_2d_array(const char *s);
1976     std::string tostring(int dps) const;
1977 #endif
1978 };
1979 
1980 class complex_2d_array : public ae_matrix_wrapper
1981 {
1982 public:
1983     complex_2d_array();
1984     complex_2d_array(const complex_2d_array &rhs);
1985     complex_2d_array(alglib_impl::ae_matrix *p);
1986     virtual ~complex_2d_array();
1987 
1988     const complex_2d_array& operator=(const complex_2d_array &rhs);
1989 
1990     const alglib::complex& operator()(ae_int_t i, ae_int_t j) const;
1991     alglib::complex& operator()(ae_int_t i, ae_int_t j);
1992 
1993     const alglib::complex* operator[](ae_int_t i) const;
1994     alglib::complex* operator[](ae_int_t i);
1995 
1996     //
1997     // This function allocates array[irows,icols] and copies data
1998     // pointed by pContent to its memory. Completely independent
1999     // copy of data is created.
2000     //
2001     void setcontent(ae_int_t irows, ae_int_t icols, const alglib::complex *pContent );
2002 
2003 #if !defined(AE_NO_EXCEPTIONS)
2004     complex_2d_array(const char *s);
2005     std::string tostring(int dps) const;
2006 #endif
2007 };
2008 
2009 /********************************************************************
2010 CSV operations: reading CSV file to real matrix.
2011 
2012 This function reads CSV  file  and  stores  its  contents  to  double
2013 precision 2D array. Format of the data file must conform to RFC  4180
2014 specification, with additional notes:
2015 * file size should be less than 2GB
2016 * ASCI encoding, UTF-8 without BOM (in header names) are supported
2017 * any character (comma/tab/space) may be used as field separator,  as
2018   long as it is distinct from one used for decimal point
2019 * multiple subsequent field separators (say, two  spaces) are treated
2020   as MULTIPLE separators, not one big separator
2021 * both comma and full stop may be used as decimal point. Parser  will
2022   automatically determine specific character being used.  Both  fixed
2023   and exponential number formats are  allowed.   Thousand  separators
2024   are NOT allowed.
2025 * line may end with \n (Unix style) or \r\n (Windows  style),  parser
2026   will automatically adapt to chosen convention
2027 * escaped fields (ones in double quotes) are not supported
2028 
2029 INPUT PARAMETERS:
2030     filename        relative/absolute path
2031     separator       character used to separate fields.  May  be  ' ',
2032                     ',', '\t'. Other separators are possible too.
2033     flags           several values combined with bitwise OR:
2034                     * alglib::CSV_SKIP_HEADERS -  if present, first row
2035                       contains headers  and  will  be  skipped.   Its
2036                       contents is used to determine fields count, and
2037                       that's all.
2038                     If no flags are specified, default value 0x0  (or
2039                     alglib::CSV_DEFAULT, which is same) should be used.
2040 
2041 OUTPUT PARAMETERS:
2042     out             2D matrix, CSV file parsed with atof()
2043 
2044 HANDLING OF SPECIAL CASES:
2045 * file does not exist - alglib::ap_error exception is thrown
2046 * empty file - empty array is returned (no exception)
2047 * skip_first_row=true, only one row in file - empty array is returned
2048 * field contents is not recognized by atof() - field value is replaced
2049   by 0.0
2050 ********************************************************************/
2051 #if !defined(AE_NO_EXCEPTIONS)
2052 void read_csv(const char *filename, char separator, int flags, alglib::real_2d_array &out);
2053 #endif
2054 
2055 
2056 /********************************************************************
2057 This function activates trace output, with trace log being  saved  to
2058 file (appended to the end).
2059 
2060 Tracing allows us to study behavior of ALGLIB solvers  and  to  debug
2061 their failures:
2062 * tracing is  limited  by one/several ALGLIB parts specified by means
2063   of trace tags, like "SLP" (for SLP solver) or "OPTGUARD"  (OptGuard
2064   integrity checker).
2065 * some ALGLIB solvers support hierarchies of trace tags which activate
2066   different kinds of tracing. Say, "SLP" defines some basic  tracing,
2067   but "SLP.PROBING" defines more detailed and costly tracing.
2068 * generally, "TRACETAG.SUBTAG"   also  implicitly  activates  logging
2069   which is activated by "TRACETAG"
2070 * you may define multiple trace tags by separating them with  commas,
2071   like "SLP,OPTGUARD,SLP.PROBING"
2072 * trace tags are case-insensitive
2073 * spaces/tabs are NOT allowed in the tags string
2074 
2075 Trace log is saved to file "filename", which is opened in the  append
2076 mode. If no file with such name  can  be  opened,  tracing  won't  be
2077 performed (but no exception will be generated).
2078 ********************************************************************/
2079 void trace_file(std::string tags, std::string filename);
2080 
2081 
2082 /********************************************************************
2083 This function disables tracing.
2084 ********************************************************************/
2085 void trace_disable();
2086 
2087 
2088 /********************************************************************
2089 Constants and functions introduced for compatibility with AlgoPascal
2090 ********************************************************************/
2091 extern const double machineepsilon;
2092 extern const double maxrealnumber;
2093 extern const double minrealnumber;
2094 extern const double fp_nan;
2095 extern const double fp_posinf;
2096 extern const double fp_neginf;
2097 extern const ae_int_t endianness;
2098 static const int CSV_DEFAULT = 0x0;
2099 static const int CSV_SKIP_HEADERS = 0x1;
2100 
2101 int sign(double x);
2102 double randomreal();
2103 ae_int_t randominteger(ae_int_t maxv);
2104 int round(double x);
2105 int trunc(double x);
2106 int ifloor(double x);
2107 int iceil(double x);
2108 double pi();
2109 double sqr(double x);
2110 int maxint(int m1, int m2);
2111 int minint(int m1, int m2);
2112 double maxreal(double m1, double m2);
2113 double minreal(double m1, double m2);
2114 
2115 bool fp_eq(double v1, double v2);
2116 bool fp_neq(double v1, double v2);
2117 bool fp_less(double v1, double v2);
2118 bool fp_less_eq(double v1, double v2);
2119 bool fp_greater(double v1, double v2);
2120 bool fp_greater_eq(double v1, double v2);
2121 
2122 bool fp_isnan(double x);
2123 bool fp_isposinf(double x);
2124 bool fp_isneginf(double x);
2125 bool fp_isinf(double x);
2126 bool fp_isfinite(double x);
2127 
2128 /********************************************************************
2129 Exception handling macros
2130 ********************************************************************/
2131 #if !defined(AE_NO_EXCEPTIONS)
2132 ///////////////////////////////////////
2133 // exception-based code
2134 //////////////////////////////
2135 #define _ALGLIB_CPP_EXCEPTION(msg) throw alglib::ap_error(msg)
2136 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_BEGIN          try{
2137 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_END            }catch(...){ ae_clean_up_before_breaking(&_alglib_env_state); throw; }
2138 
2139 #else
2140 
2141 ///////////////////////////////////////
2142 // Exception-free version
2143 //////////////////////////////
2144 #if AE_OS!=AE_UNKNOWN
2145 #error Exception-free mode can not be combined with AE_OS definition
2146 #endif
2147 #if AE_THREADING!=AE_SERIAL_UNSAFE
2148 #error Exception-free mode is thread-unsafe; define AE_THREADING=AE_SERIAL_UNSAFE to prove that you know it
2149 #endif
2150 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_BEGIN
2151 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_END
2152 #define _ALGLIB_SET_ERROR_FLAG(s) set_error_flag(s)
2153 
2154 // sets eror flag and (optionally) sets error message
2155 void set_error_flag(const char *s = NULL);
2156 
2157 // returns error flag and optionally returns error message (loaded to *p_msg);
2158 // if error flag is not set (or p_msg is NULL) *p_msg is not changed.
2159 bool get_error_flag(const char **p_msg = NULL);
2160 
2161 // clears error flag (it is not cleared until explicit call to this function)
2162 void clear_error_flag();
2163 #endif
2164 
2165 }//namespace alglib
2166 
2167 
2168 
2169 /////////////////////////////////////////////////////////////////////////
2170 //
2171 // THIS SECTIONS CONTAINS DECLARATIONS FOR OPTIMIZED LINEAR ALGEBRA CODES
2172 // IT IS SHARED BETWEEN C++ AND PURE C LIBRARIES
2173 //
2174 /////////////////////////////////////////////////////////////////////////
2175 
2176 
2177 
2178 namespace alglib_impl
2179 {
2180 #define ALGLIB_INTERCEPTS_ABLAS
2181 void _ialglib_vzero(ae_int_t n, double *p, ae_int_t stride);
2182 void _ialglib_vzero_complex(ae_int_t n, ae_complex *p, ae_int_t stride);
2183 void _ialglib_vcopy(ae_int_t n, const double *a, ae_int_t stridea, double *b, ae_int_t strideb);
2184 void _ialglib_vcopy_complex(ae_int_t n, const ae_complex *a, ae_int_t stridea, double *b, ae_int_t strideb, const char *conj);
2185 void _ialglib_vcopy_dcomplex(ae_int_t n, const double *a, ae_int_t stridea, double *b, ae_int_t strideb, const char *conj);
2186 void _ialglib_mcopyblock(ae_int_t m, ae_int_t n, const double *a, ae_int_t op, ae_int_t stride, double *b);
2187 void _ialglib_mcopyunblock(ae_int_t m, ae_int_t n, const double *a, ae_int_t op, double *b, ae_int_t stride);
2188 void _ialglib_mcopyblock_complex(ae_int_t m, ae_int_t n, const ae_complex *a, ae_int_t op, ae_int_t stride, double *b);
2189 void _ialglib_mcopyunblock_complex(ae_int_t m, ae_int_t n, const double *a, ae_int_t op, ae_complex* b, ae_int_t stride);
2190 
2191 ae_bool _ialglib_i_rmatrixgemmf(ae_int_t m,
2192      ae_int_t n,
2193      ae_int_t k,
2194      double alpha,
2195      ae_matrix *a,
2196      ae_int_t ia,
2197      ae_int_t ja,
2198      ae_int_t optypea,
2199      ae_matrix *b,
2200      ae_int_t ib,
2201      ae_int_t jb,
2202      ae_int_t optypeb,
2203      double beta,
2204      ae_matrix *c,
2205      ae_int_t ic,
2206      ae_int_t jc);
2207 ae_bool _ialglib_i_cmatrixgemmf(ae_int_t m,
2208      ae_int_t n,
2209      ae_int_t k,
2210      ae_complex alpha,
2211      ae_matrix *a,
2212      ae_int_t ia,
2213      ae_int_t ja,
2214      ae_int_t optypea,
2215      ae_matrix *b,
2216      ae_int_t ib,
2217      ae_int_t jb,
2218      ae_int_t optypeb,
2219      ae_complex beta,
2220      ae_matrix *c,
2221      ae_int_t ic,
2222      ae_int_t jc);
2223 ae_bool _ialglib_i_cmatrixrighttrsmf(ae_int_t m,
2224      ae_int_t n,
2225      ae_matrix *a,
2226      ae_int_t i1,
2227      ae_int_t j1,
2228      ae_bool isupper,
2229      ae_bool isunit,
2230      ae_int_t optype,
2231      ae_matrix *x,
2232      ae_int_t i2,
2233      ae_int_t j2);
2234 ae_bool _ialglib_i_rmatrixrighttrsmf(ae_int_t m,
2235      ae_int_t n,
2236      ae_matrix *a,
2237      ae_int_t i1,
2238      ae_int_t j1,
2239      ae_bool isupper,
2240      ae_bool isunit,
2241      ae_int_t optype,
2242      ae_matrix *x,
2243      ae_int_t i2,
2244      ae_int_t j2);
2245 ae_bool _ialglib_i_cmatrixlefttrsmf(ae_int_t m,
2246      ae_int_t n,
2247      ae_matrix *a,
2248      ae_int_t i1,
2249      ae_int_t j1,
2250      ae_bool isupper,
2251      ae_bool isunit,
2252      ae_int_t optype,
2253      ae_matrix *x,
2254      ae_int_t i2,
2255      ae_int_t j2);
2256 ae_bool _ialglib_i_rmatrixlefttrsmf(ae_int_t m,
2257      ae_int_t n,
2258      ae_matrix *a,
2259      ae_int_t i1,
2260      ae_int_t j1,
2261      ae_bool isupper,
2262      ae_bool isunit,
2263      ae_int_t optype,
2264      ae_matrix *x,
2265      ae_int_t i2,
2266      ae_int_t j2);
2267 ae_bool _ialglib_i_cmatrixherkf(ae_int_t n,
2268      ae_int_t k,
2269      double alpha,
2270      ae_matrix *a,
2271      ae_int_t ia,
2272      ae_int_t ja,
2273      ae_int_t optypea,
2274      double beta,
2275      ae_matrix *c,
2276      ae_int_t ic,
2277      ae_int_t jc,
2278      ae_bool isupper);
2279 ae_bool _ialglib_i_rmatrixsyrkf(ae_int_t n,
2280      ae_int_t k,
2281      double alpha,
2282      ae_matrix *a,
2283      ae_int_t ia,
2284      ae_int_t ja,
2285      ae_int_t optypea,
2286      double beta,
2287      ae_matrix *c,
2288      ae_int_t ic,
2289      ae_int_t jc,
2290      ae_bool isupper);
2291 ae_bool _ialglib_i_cmatrixrank1f(ae_int_t m,
2292      ae_int_t n,
2293      ae_matrix *a,
2294      ae_int_t ia,
2295      ae_int_t ja,
2296      ae_vector *u,
2297      ae_int_t uoffs,
2298      ae_vector *v,
2299      ae_int_t voffs);
2300 ae_bool _ialglib_i_rmatrixrank1f(ae_int_t m,
2301      ae_int_t n,
2302      ae_matrix *a,
2303      ae_int_t ia,
2304      ae_int_t ja,
2305      ae_vector *u,
2306      ae_int_t uoffs,
2307      ae_vector *v,
2308      ae_int_t voffs);
2309 ae_bool _ialglib_i_rmatrixgerf(ae_int_t m,
2310      ae_int_t n,
2311      ae_matrix *a,
2312      ae_int_t ia,
2313      ae_int_t ja,
2314      double alpha,
2315      ae_vector *u,
2316      ae_int_t uoffs,
2317      ae_vector *v,
2318      ae_int_t voffs);
2319 
2320 
2321 
2322 #if !defined(ALGLIB_NO_FAST_KERNELS)
2323 
2324 #if defined(_ALGLIB_IMPL_DEFINES)
2325     /*
2326      * Arrays shorter than that will be processed with generic C implementation
2327      */
2328     #if !defined(_ABLASF_KERNEL_SIZE1)
2329     #define _ABLASF_KERNEL_SIZE1 16
2330     #endif
2331     #if !defined(_ABLASF_KERNEL_SIZE2)
2332     #define _ABLASF_KERNEL_SIZE2 16
2333     #endif
2334     #define _ABLASF_BLOCK_SIZE 32
2335     #define _ABLASF_MICRO_SIZE  2
2336     #if defined(_ALGLIB_HAS_AVX2_INTRINSICS) || defined(_ALGLIB_HAS_FMA_INTRINSICS)
2337         #define ULOAD256PD(x) _mm256_loadu_pd((const double*)(&x))
2338     #endif
2339 #endif
2340 
2341 /*
2342  * ABLASF kernels
2343  */
2344 double rdotv(ae_int_t n,
2345      /* Real    */ ae_vector* x,
2346      /* Real    */ ae_vector* y,
2347      ae_state *_state);
2348 double rdotvr(ae_int_t n,
2349      /* Real    */ ae_vector* x,
2350      /* Real    */ ae_matrix* a,
2351      ae_int_t i,
2352      ae_state *_state);
2353 double rdotrr(ae_int_t n,
2354      /* Real    */ ae_matrix* a,
2355      ae_int_t ia,
2356      /* Real    */ ae_matrix* b,
2357      ae_int_t ib,
2358      ae_state *_state);
2359 double rdotv2(ae_int_t n,
2360      /* Real    */ ae_vector* x,
2361      ae_state *_state);
2362 void rcopyv(ae_int_t n,
2363      /* Real    */ ae_vector* x,
2364      /* Real    */ ae_vector* y,
2365      ae_state *_state);
2366 void rcopyvr(ae_int_t n,
2367      /* Real    */ ae_vector* x,
2368      /* Real    */ ae_matrix* a,
2369      ae_int_t i,
2370      ae_state *_state);
2371 void rcopyrv(ae_int_t n,
2372      /* Real    */ ae_matrix* a,
2373      ae_int_t i,
2374      /* Real    */ ae_vector* x,
2375      ae_state *_state);
2376 void rcopyrr(ae_int_t n,
2377      /* Real    */ ae_matrix* a,
2378      ae_int_t i,
2379      /* Real    */ ae_matrix* b,
2380      ae_int_t k,
2381      ae_state *_state);
2382 void rcopymulv(ae_int_t n,
2383      double v,
2384      /* Real    */ ae_vector* x,
2385      /* Real    */ ae_vector* y,
2386      ae_state *_state);
2387 void rcopymulvr(ae_int_t n,
2388      double v,
2389      /* Real    */ ae_vector* x,
2390      /* Real    */ ae_matrix* y,
2391      ae_int_t ridx,
2392      ae_state *_state);
2393 void icopyv(ae_int_t n,
2394      /* Integer */ ae_vector* x,
2395      /* Integer */ ae_vector* y,
2396      ae_state *_state);
2397 void bcopyv(ae_int_t n,
2398      /* Boolean */ ae_vector* x,
2399      /* Boolean */ ae_vector* y,
2400      ae_state *_state);
2401 void rsetv(ae_int_t n,
2402      double v,
2403      /* Real    */ ae_vector* x,
2404      ae_state *_state);
2405 void rsetr(ae_int_t n,
2406      double v,
2407      /* Real    */ ae_matrix* a,
2408      ae_int_t i,
2409      ae_state *_state);
2410 void rsetvx(ae_int_t n,
2411      double v,
2412      /* Real    */ ae_vector* x,
2413      ae_int_t offsx,
2414      ae_state *_state);
2415 void rsetm(ae_int_t m,
2416      ae_int_t n,
2417      double v,
2418      /* Real    */ ae_matrix* a,
2419      ae_state *_state);
2420 void isetv(ae_int_t n,
2421      ae_int_t v,
2422      /* Integer */ ae_vector* x,
2423      ae_state *_state);
2424 void bsetv(ae_int_t n,
2425      ae_bool v,
2426      /* Boolean */ ae_vector* x,
2427      ae_state *_state);
2428 void rmulv(ae_int_t n,
2429      double v,
2430      /* Real    */ ae_vector* x,
2431      ae_state *_state);
2432 void rmulr(ae_int_t n,
2433      double v,
2434      /* Real    */ ae_matrix* x,
2435      ae_int_t rowidx,
2436      ae_state *_state);
2437 void rmulvx(ae_int_t n,
2438      double v,
2439      /* Real    */ ae_vector* x,
2440      ae_int_t offsx,
2441      ae_state *_state);
2442 void raddv(ae_int_t n,
2443      double alpha,
2444      /* Real    */ ae_vector* y,
2445      /* Real    */ ae_vector* x,
2446      ae_state *_state);
2447 void raddvr(ae_int_t n,
2448      double alpha,
2449      /* Real    */ ae_vector* y,
2450      /* Real    */ ae_matrix* x,
2451      ae_int_t rowidx,
2452      ae_state *_state);
2453 void raddrv(ae_int_t n,
2454      double alpha,
2455      /* Real    */ ae_matrix* y,
2456      ae_int_t ridx,
2457      /* Real    */ ae_vector* x,
2458      ae_state *_state);
2459 void raddrr(ae_int_t n,
2460      double alpha,
2461      /* Real    */ ae_matrix* y,
2462      ae_int_t ridxsrc,
2463      /* Real    */ ae_matrix* x,
2464      ae_int_t ridxdst,
2465      ae_state *_state);
2466 void raddvx(ae_int_t n,
2467      double alpha,
2468      /* Real    */ ae_vector* y,
2469      ae_int_t offsy,
2470      /* Real    */ ae_vector* x,
2471      ae_int_t offsx,
2472      ae_state *_state);
2473 void rmergemulv(ae_int_t n,
2474      /* Real    */ ae_vector* y,
2475      /* Real    */ ae_vector* x,
2476      ae_state *_state);
2477 void rmergemulvr(ae_int_t n,
2478      /* Real    */ ae_vector* y,
2479      /* Real    */ ae_matrix* x,
2480      ae_int_t rowidx,
2481      ae_state *_state);
2482 void rmergemulrv(ae_int_t n,
2483      /* Real    */ ae_matrix* y,
2484      ae_int_t rowidx,
2485      /* Real    */ ae_vector* x,
2486      ae_state *_state);
2487 void rmergemaxv(ae_int_t n,
2488      /* Real    */ ae_vector* y,
2489      /* Real    */ ae_vector* x,
2490      ae_state *_state);
2491 void rmergemaxvr(ae_int_t n,
2492      /* Real    */ ae_vector* y,
2493      /* Real    */ ae_matrix* x,
2494      ae_int_t rowidx,
2495      ae_state *_state);
2496 void rmergemaxrv(ae_int_t n,
2497      /* Real    */ ae_matrix* y,
2498      ae_int_t rowidx,
2499      /* Real    */ ae_vector* x,
2500      ae_state *_state);
2501 void rmergeminv(ae_int_t n,
2502      /* Real    */ ae_vector* y,
2503      /* Real    */ ae_vector* x,
2504      ae_state *_state);
2505 void rmergeminvr(ae_int_t n,
2506      /* Real    */ ae_vector* y,
2507      /* Real    */ ae_matrix* x,
2508      ae_int_t rowidx,
2509      ae_state *_state);
2510 void rmergeminrv(ae_int_t n,
2511      /* Real    */ ae_matrix* y,
2512      ae_int_t rowidx,
2513      /* Real    */ ae_vector* x,
2514      ae_state *_state);
2515 double rmaxv(ae_int_t n,
2516     /* Real    */ ae_vector* x,
2517     ae_state *_state);
2518 double rmaxr(ae_int_t n,
2519      /* Real    */ ae_matrix* x,
2520      ae_int_t rowidx,
2521      ae_state *_state);
2522 double rmaxabsv(ae_int_t n,
2523      /* Real    */ ae_vector* x,
2524      ae_state *_state);
2525 double rmaxabsr(ae_int_t n,
2526      /* Real    */ ae_matrix* x,
2527      ae_int_t rowidx,
2528      ae_state *_state);
2529 void rcopyvx(ae_int_t n,
2530      /* Real    */ ae_vector* x,
2531      ae_int_t offsx,
2532      /* Real    */ ae_vector* y,
2533      ae_int_t offsy,
2534      ae_state *_state);
2535 void icopyvx(ae_int_t n,
2536      /* Integer */ ae_vector* x,
2537      ae_int_t offsx,
2538      /* Integer */ ae_vector* y,
2539      ae_int_t offsy,
2540      ae_state *_state);
2541 
2542 void rgemv(ae_int_t m,
2543      ae_int_t n,
2544      double alpha,
2545      /* Real    */ ae_matrix* a,
2546      ae_int_t opa,
2547      /* Real    */ ae_vector* x,
2548      double beta,
2549      /* Real    */ ae_vector* y,
2550      ae_state *_state);
2551 void rgemvx(ae_int_t m,
2552      ae_int_t n,
2553      double alpha,
2554      /* Real    */ ae_matrix* a,
2555      ae_int_t ia,
2556      ae_int_t ja,
2557      ae_int_t opa,
2558      /* Real    */ ae_vector* x,
2559      ae_int_t ix,
2560      double beta,
2561      /* Real    */ ae_vector* y,
2562      ae_int_t iy,
2563      ae_state *_state);
2564 void rger(ae_int_t m,
2565      ae_int_t n,
2566      double alpha,
2567      /* Real    */ ae_vector* u,
2568      /* Real    */ ae_vector* v,
2569      /* Real    */ ae_matrix* a,
2570      ae_state *_state);
2571 void rtrsvx(ae_int_t n,
2572      /* Real    */ ae_matrix* a,
2573      ae_int_t ia,
2574      ae_int_t ja,
2575      ae_bool isupper,
2576      ae_bool isunit,
2577      ae_int_t optype,
2578      /* Real    */ ae_vector* x,
2579      ae_int_t ix,
2580      ae_state *_state);
2581 
2582 ae_bool ablasf_rgemm32basecase(
2583      ae_int_t m,
2584      ae_int_t n,
2585      ae_int_t k,
2586      double alpha,
2587      /* Real    */ ae_matrix* a,
2588      ae_int_t ia,
2589      ae_int_t ja,
2590      ae_int_t optypea,
2591      /* Real    */ ae_matrix* b,
2592      ae_int_t ib,
2593      ae_int_t jb,
2594      ae_int_t optypeb,
2595      double beta,
2596      /* Real    */ ae_matrix* c,
2597      ae_int_t ic,
2598      ae_int_t jc,
2599      ae_state *_state);
2600 
2601 /*
2602  * Sparse supernodal Cholesky kernels
2603  */
2604 ae_int_t spchol_spsymmgetmaxsimd(ae_state *_state);
2605 void spchol_propagatefwd(/* Real    */ ae_vector* x,
2606      ae_int_t cols0,
2607      ae_int_t blocksize,
2608      /* Integer */ ae_vector* superrowidx,
2609      ae_int_t rbase,
2610      ae_int_t offdiagsize,
2611      /* Real    */ ae_vector* rowstorage,
2612      ae_int_t offss,
2613      ae_int_t sstride,
2614      /* Real    */ ae_vector* simdbuf,
2615      ae_int_t simdwidth,
2616      ae_state *_state);
2617 ae_bool spchol_updatekernelabc4(/* Real    */ ae_vector* rowstorage,
2618      ae_int_t offss,
2619      ae_int_t twidth,
2620      ae_int_t offsu,
2621      ae_int_t uheight,
2622      ae_int_t urank,
2623      ae_int_t urowstride,
2624      ae_int_t uwidth,
2625      /* Real    */ ae_vector* diagd,
2626      ae_int_t offsd,
2627      /* Integer */ ae_vector* raw2smap,
2628      /* Integer */ ae_vector* superrowidx,
2629      ae_int_t urbase,
2630      ae_state *_state);
2631 ae_bool spchol_updatekernel4444(/* Real    */ ae_vector* rowstorage,
2632      ae_int_t offss,
2633      ae_int_t sheight,
2634      ae_int_t offsu,
2635      ae_int_t uheight,
2636      /* Real    */ ae_vector* diagd,
2637      ae_int_t offsd,
2638      /* Integer */ ae_vector* raw2smap,
2639      /* Integer */ ae_vector* superrowidx,
2640      ae_int_t urbase,
2641      ae_state *_state);
2642 
2643 /* ALGLIB_NO_FAST_KERNELS */
2644 #endif
2645 
2646 }
2647 
2648 
2649 /////////////////////////////////////////////////////////////////////////
2650 //
2651 // THIS SECTION CONTAINS PARALLEL SUBROUTINES
2652 //
2653 /////////////////////////////////////////////////////////////////////////
2654 
2655 namespace alglib_impl
2656 {
2657 
2658 }
2659 
2660 
2661 /////////////////////////////////////////////////////////////////////////
2662 //
2663 // THIS SECTION CONTAINS DEFINITIONS FOR PARTIAL COMPILATION
2664 //
2665 /////////////////////////////////////////////////////////////////////////
2666 #ifdef AE_COMPILE_APSERV
2667 #define AE_PARTIAL_BUILD
2668 #endif
2669 
2670 #ifdef AE_COMPILE_ABLASF
2671 #define AE_PARTIAL_BUILD
2672 #endif
2673 
2674 #ifdef AE_COMPILE_HQRND
2675 #define AE_PARTIAL_BUILD
2676 #define AE_COMPILE_APSERV
2677 #define AE_COMPILE_ABLASF
2678 #endif
2679 
2680 #ifdef AE_COMPILE_HBLAS
2681 #define AE_PARTIAL_BUILD
2682 #endif
2683 
2684 #ifdef AE_COMPILE_CREFLECTIONS
2685 #define AE_PARTIAL_BUILD
2686 #endif
2687 
2688 #ifdef AE_COMPILE_SBLAS
2689 #define AE_PARTIAL_BUILD
2690 #define AE_COMPILE_APSERV
2691 #endif
2692 
2693 #ifdef AE_COMPILE_ABLASMKL
2694 #define AE_PARTIAL_BUILD
2695 #endif
2696 
2697 #ifdef AE_COMPILE_ABLAS
2698 #define AE_PARTIAL_BUILD
2699 #define AE_COMPILE_APSERV
2700 #define AE_COMPILE_ABLASF
2701 #define AE_COMPILE_ABLASMKL
2702 #endif
2703 
2704 #ifdef AE_COMPILE_ORTFAC
2705 #define AE_PARTIAL_BUILD
2706 #define AE_COMPILE_APSERV
2707 #define AE_COMPILE_ABLASF
2708 #define AE_COMPILE_HQRND
2709 #define AE_COMPILE_HBLAS
2710 #define AE_COMPILE_CREFLECTIONS
2711 #define AE_COMPILE_SBLAS
2712 #define AE_COMPILE_ABLASMKL
2713 #define AE_COMPILE_ABLAS
2714 #endif
2715 
2716 #ifdef AE_COMPILE_MATGEN
2717 #define AE_PARTIAL_BUILD
2718 #define AE_COMPILE_APSERV
2719 #define AE_COMPILE_ABLASF
2720 #define AE_COMPILE_ABLASMKL
2721 #define AE_COMPILE_ABLAS
2722 #define AE_COMPILE_CREFLECTIONS
2723 #define AE_COMPILE_HQRND
2724 #endif
2725 
2726 #ifdef AE_COMPILE_SCODES
2727 #define AE_PARTIAL_BUILD
2728 #endif
2729 
2730 #ifdef AE_COMPILE_TSORT
2731 #define AE_PARTIAL_BUILD
2732 #define AE_COMPILE_APSERV
2733 #endif
2734 
2735 #ifdef AE_COMPILE_SPARSE
2736 #define AE_PARTIAL_BUILD
2737 #define AE_COMPILE_APSERV
2738 #define AE_COMPILE_SCODES
2739 #define AE_COMPILE_ABLASMKL
2740 #define AE_COMPILE_ABLASF
2741 #define AE_COMPILE_HQRND
2742 #define AE_COMPILE_TSORT
2743 #endif
2744 
2745 #ifdef AE_COMPILE_BLAS
2746 #define AE_PARTIAL_BUILD
2747 #endif
2748 
2749 #ifdef AE_COMPILE_ROTATIONS
2750 #define AE_PARTIAL_BUILD
2751 #endif
2752 
2753 #ifdef AE_COMPILE_HSSCHUR
2754 #define AE_PARTIAL_BUILD
2755 #define AE_COMPILE_BLAS
2756 #define AE_COMPILE_ABLASMKL
2757 #define AE_COMPILE_ROTATIONS
2758 #define AE_COMPILE_APSERV
2759 #define AE_COMPILE_ABLASF
2760 #define AE_COMPILE_ABLAS
2761 #endif
2762 
2763 #ifdef AE_COMPILE_BASICSTATOPS
2764 #define AE_PARTIAL_BUILD
2765 #define AE_COMPILE_APSERV
2766 #define AE_COMPILE_TSORT
2767 #endif
2768 
2769 #ifdef AE_COMPILE_EVD
2770 #define AE_PARTIAL_BUILD
2771 #define AE_COMPILE_APSERV
2772 #define AE_COMPILE_ABLASF
2773 #define AE_COMPILE_HQRND
2774 #define AE_COMPILE_HBLAS
2775 #define AE_COMPILE_CREFLECTIONS
2776 #define AE_COMPILE_SBLAS
2777 #define AE_COMPILE_ABLASMKL
2778 #define AE_COMPILE_ABLAS
2779 #define AE_COMPILE_ORTFAC
2780 #define AE_COMPILE_MATGEN
2781 #define AE_COMPILE_SCODES
2782 #define AE_COMPILE_TSORT
2783 #define AE_COMPILE_SPARSE
2784 #define AE_COMPILE_BLAS
2785 #define AE_COMPILE_ROTATIONS
2786 #define AE_COMPILE_HSSCHUR
2787 #define AE_COMPILE_BASICSTATOPS
2788 #endif
2789 
2790 #ifdef AE_COMPILE_DLU
2791 #define AE_PARTIAL_BUILD
2792 #define AE_COMPILE_APSERV
2793 #define AE_COMPILE_ABLASF
2794 #define AE_COMPILE_ABLASMKL
2795 #define AE_COMPILE_ABLAS
2796 #endif
2797 
2798 #ifdef AE_COMPILE_SPTRF
2799 #define AE_PARTIAL_BUILD
2800 #define AE_COMPILE_APSERV
2801 #define AE_COMPILE_ABLASF
2802 #define AE_COMPILE_ABLASMKL
2803 #define AE_COMPILE_ABLAS
2804 #define AE_COMPILE_SCODES
2805 #define AE_COMPILE_HQRND
2806 #define AE_COMPILE_TSORT
2807 #define AE_COMPILE_SPARSE
2808 #define AE_COMPILE_DLU
2809 #endif
2810 
2811 #ifdef AE_COMPILE_AMDORDERING
2812 #define AE_PARTIAL_BUILD
2813 #define AE_COMPILE_APSERV
2814 #define AE_COMPILE_ABLASF
2815 #define AE_COMPILE_ABLASMKL
2816 #define AE_COMPILE_ABLAS
2817 #define AE_COMPILE_SCODES
2818 #define AE_COMPILE_HQRND
2819 #define AE_COMPILE_TSORT
2820 #define AE_COMPILE_SPARSE
2821 #endif
2822 
2823 #ifdef AE_COMPILE_SPCHOL
2824 #define AE_PARTIAL_BUILD
2825 #define AE_COMPILE_APSERV
2826 #define AE_COMPILE_ABLASF
2827 #define AE_COMPILE_ABLASMKL
2828 #define AE_COMPILE_ABLAS
2829 #define AE_COMPILE_SCODES
2830 #define AE_COMPILE_HQRND
2831 #define AE_COMPILE_TSORT
2832 #define AE_COMPILE_SPARSE
2833 #define AE_COMPILE_AMDORDERING
2834 #endif
2835 
2836 #ifdef AE_COMPILE_TRFAC
2837 #define AE_PARTIAL_BUILD
2838 #define AE_COMPILE_APSERV
2839 #define AE_COMPILE_ABLASF
2840 #define AE_COMPILE_ABLASMKL
2841 #define AE_COMPILE_ABLAS
2842 #define AE_COMPILE_SCODES
2843 #define AE_COMPILE_HQRND
2844 #define AE_COMPILE_TSORT
2845 #define AE_COMPILE_SPARSE
2846 #define AE_COMPILE_DLU
2847 #define AE_COMPILE_SPTRF
2848 #define AE_COMPILE_AMDORDERING
2849 #define AE_COMPILE_SPCHOL
2850 #define AE_COMPILE_CREFLECTIONS
2851 #define AE_COMPILE_MATGEN
2852 #define AE_COMPILE_ROTATIONS
2853 #endif
2854 
2855 #ifdef AE_COMPILE_POLYNOMIALSOLVER
2856 #define AE_PARTIAL_BUILD
2857 #define AE_COMPILE_APSERV
2858 #define AE_COMPILE_ABLASF
2859 #define AE_COMPILE_HQRND
2860 #define AE_COMPILE_HBLAS
2861 #define AE_COMPILE_CREFLECTIONS
2862 #define AE_COMPILE_SBLAS
2863 #define AE_COMPILE_ABLASMKL
2864 #define AE_COMPILE_ABLAS
2865 #define AE_COMPILE_ORTFAC
2866 #define AE_COMPILE_MATGEN
2867 #define AE_COMPILE_SCODES
2868 #define AE_COMPILE_TSORT
2869 #define AE_COMPILE_SPARSE
2870 #define AE_COMPILE_BLAS
2871 #define AE_COMPILE_ROTATIONS
2872 #define AE_COMPILE_HSSCHUR
2873 #define AE_COMPILE_BASICSTATOPS
2874 #define AE_COMPILE_EVD
2875 #define AE_COMPILE_DLU
2876 #define AE_COMPILE_SPTRF
2877 #define AE_COMPILE_AMDORDERING
2878 #define AE_COMPILE_SPCHOL
2879 #define AE_COMPILE_TRFAC
2880 #endif
2881 
2882 #ifdef AE_COMPILE_BDSVD
2883 #define AE_PARTIAL_BUILD
2884 #define AE_COMPILE_ROTATIONS
2885 #define AE_COMPILE_ABLASMKL
2886 #define AE_COMPILE_APSERV
2887 #define AE_COMPILE_ABLASF
2888 #define AE_COMPILE_ABLAS
2889 #define AE_COMPILE_HQRND
2890 #endif
2891 
2892 #ifdef AE_COMPILE_SVD
2893 #define AE_PARTIAL_BUILD
2894 #define AE_COMPILE_APSERV
2895 #define AE_COMPILE_ABLASF
2896 #define AE_COMPILE_HQRND
2897 #define AE_COMPILE_HBLAS
2898 #define AE_COMPILE_CREFLECTIONS
2899 #define AE_COMPILE_SBLAS
2900 #define AE_COMPILE_ABLASMKL
2901 #define AE_COMPILE_ABLAS
2902 #define AE_COMPILE_ORTFAC
2903 #define AE_COMPILE_BLAS
2904 #define AE_COMPILE_ROTATIONS
2905 #define AE_COMPILE_BDSVD
2906 #endif
2907 
2908 #ifdef AE_COMPILE_TRLINSOLVE
2909 #define AE_PARTIAL_BUILD
2910 #endif
2911 
2912 #ifdef AE_COMPILE_SAFESOLVE
2913 #define AE_PARTIAL_BUILD
2914 #endif
2915 
2916 #ifdef AE_COMPILE_RCOND
2917 #define AE_PARTIAL_BUILD
2918 #define AE_COMPILE_APSERV
2919 #define AE_COMPILE_ABLASF
2920 #define AE_COMPILE_ABLASMKL
2921 #define AE_COMPILE_ABLAS
2922 #define AE_COMPILE_SCODES
2923 #define AE_COMPILE_HQRND
2924 #define AE_COMPILE_TSORT
2925 #define AE_COMPILE_SPARSE
2926 #define AE_COMPILE_DLU
2927 #define AE_COMPILE_SPTRF
2928 #define AE_COMPILE_AMDORDERING
2929 #define AE_COMPILE_SPCHOL
2930 #define AE_COMPILE_CREFLECTIONS
2931 #define AE_COMPILE_MATGEN
2932 #define AE_COMPILE_ROTATIONS
2933 #define AE_COMPILE_TRFAC
2934 #define AE_COMPILE_TRLINSOLVE
2935 #define AE_COMPILE_SAFESOLVE
2936 #endif
2937 
2938 #ifdef AE_COMPILE_XBLAS
2939 #define AE_PARTIAL_BUILD
2940 #endif
2941 
2942 #ifdef AE_COMPILE_DIRECTDENSESOLVERS
2943 #define AE_PARTIAL_BUILD
2944 #define AE_COMPILE_APSERV
2945 #define AE_COMPILE_ABLASF
2946 #define AE_COMPILE_HQRND
2947 #define AE_COMPILE_HBLAS
2948 #define AE_COMPILE_CREFLECTIONS
2949 #define AE_COMPILE_SBLAS
2950 #define AE_COMPILE_ABLASMKL
2951 #define AE_COMPILE_ABLAS
2952 #define AE_COMPILE_ORTFAC
2953 #define AE_COMPILE_BLAS
2954 #define AE_COMPILE_ROTATIONS
2955 #define AE_COMPILE_BDSVD
2956 #define AE_COMPILE_SVD
2957 #define AE_COMPILE_SCODES
2958 #define AE_COMPILE_TSORT
2959 #define AE_COMPILE_SPARSE
2960 #define AE_COMPILE_DLU
2961 #define AE_COMPILE_SPTRF
2962 #define AE_COMPILE_AMDORDERING
2963 #define AE_COMPILE_SPCHOL
2964 #define AE_COMPILE_MATGEN
2965 #define AE_COMPILE_TRFAC
2966 #define AE_COMPILE_TRLINSOLVE
2967 #define AE_COMPILE_SAFESOLVE
2968 #define AE_COMPILE_RCOND
2969 #define AE_COMPILE_XBLAS
2970 #endif
2971 
2972 #ifdef AE_COMPILE_DIRECTSPARSESOLVERS
2973 #define AE_PARTIAL_BUILD
2974 #define AE_COMPILE_APSERV
2975 #define AE_COMPILE_SCODES
2976 #define AE_COMPILE_ABLASMKL
2977 #define AE_COMPILE_ABLASF
2978 #define AE_COMPILE_HQRND
2979 #define AE_COMPILE_TSORT
2980 #define AE_COMPILE_SPARSE
2981 #define AE_COMPILE_ABLAS
2982 #define AE_COMPILE_DLU
2983 #define AE_COMPILE_SPTRF
2984 #define AE_COMPILE_AMDORDERING
2985 #define AE_COMPILE_SPCHOL
2986 #define AE_COMPILE_CREFLECTIONS
2987 #define AE_COMPILE_MATGEN
2988 #define AE_COMPILE_ROTATIONS
2989 #define AE_COMPILE_TRFAC
2990 #endif
2991 
2992 #ifdef AE_COMPILE_FBLS
2993 #define AE_PARTIAL_BUILD
2994 #define AE_COMPILE_APSERV
2995 #define AE_COMPILE_ABLASF
2996 #define AE_COMPILE_ABLASMKL
2997 #define AE_COMPILE_ABLAS
2998 #define AE_COMPILE_ROTATIONS
2999 #define AE_COMPILE_HQRND
3000 #define AE_COMPILE_HBLAS
3001 #define AE_COMPILE_CREFLECTIONS
3002 #define AE_COMPILE_SBLAS
3003 #define AE_COMPILE_ORTFAC
3004 #endif
3005 
3006 #ifdef AE_COMPILE_ITERATIVESPARSE
3007 #define AE_PARTIAL_BUILD
3008 #define AE_COMPILE_APSERV
3009 #define AE_COMPILE_SCODES
3010 #define AE_COMPILE_ABLASMKL
3011 #define AE_COMPILE_ABLASF
3012 #define AE_COMPILE_HQRND
3013 #define AE_COMPILE_TSORT
3014 #define AE_COMPILE_SPARSE
3015 #define AE_COMPILE_ABLAS
3016 #define AE_COMPILE_DLU
3017 #define AE_COMPILE_SPTRF
3018 #define AE_COMPILE_AMDORDERING
3019 #define AE_COMPILE_SPCHOL
3020 #define AE_COMPILE_CREFLECTIONS
3021 #define AE_COMPILE_MATGEN
3022 #define AE_COMPILE_ROTATIONS
3023 #define AE_COMPILE_TRFAC
3024 #define AE_COMPILE_DIRECTSPARSESOLVERS
3025 #define AE_COMPILE_HBLAS
3026 #define AE_COMPILE_SBLAS
3027 #define AE_COMPILE_ORTFAC
3028 #define AE_COMPILE_FBLS
3029 #endif
3030 
3031 #ifdef AE_COMPILE_LINCG
3032 #define AE_PARTIAL_BUILD
3033 #define AE_COMPILE_APSERV
3034 #define AE_COMPILE_SCODES
3035 #define AE_COMPILE_ABLASMKL
3036 #define AE_COMPILE_ABLASF
3037 #define AE_COMPILE_HQRND
3038 #define AE_COMPILE_TSORT
3039 #define AE_COMPILE_SPARSE
3040 #define AE_COMPILE_ABLAS
3041 #define AE_COMPILE_CREFLECTIONS
3042 #define AE_COMPILE_MATGEN
3043 #endif
3044 
3045 #ifdef AE_COMPILE_NORMESTIMATOR
3046 #define AE_PARTIAL_BUILD
3047 #define AE_COMPILE_APSERV
3048 #define AE_COMPILE_ABLASF
3049 #define AE_COMPILE_HQRND
3050 #define AE_COMPILE_SCODES
3051 #define AE_COMPILE_ABLASMKL
3052 #define AE_COMPILE_TSORT
3053 #define AE_COMPILE_SPARSE
3054 #define AE_COMPILE_ABLAS
3055 #define AE_COMPILE_CREFLECTIONS
3056 #define AE_COMPILE_MATGEN
3057 #endif
3058 
3059 #ifdef AE_COMPILE_LINLSQR
3060 #define AE_PARTIAL_BUILD
3061 #define AE_COMPILE_APSERV
3062 #define AE_COMPILE_ABLASF
3063 #define AE_COMPILE_ABLASMKL
3064 #define AE_COMPILE_ABLAS
3065 #define AE_COMPILE_CREFLECTIONS
3066 #define AE_COMPILE_HQRND
3067 #define AE_COMPILE_MATGEN
3068 #define AE_COMPILE_SCODES
3069 #define AE_COMPILE_TSORT
3070 #define AE_COMPILE_SPARSE
3071 #define AE_COMPILE_NORMESTIMATOR
3072 #define AE_COMPILE_HBLAS
3073 #define AE_COMPILE_SBLAS
3074 #define AE_COMPILE_ORTFAC
3075 #define AE_COMPILE_BLAS
3076 #define AE_COMPILE_ROTATIONS
3077 #define AE_COMPILE_BDSVD
3078 #define AE_COMPILE_SVD
3079 #endif
3080 
3081 #ifdef AE_COMPILE_LINMIN
3082 #define AE_PARTIAL_BUILD
3083 #endif
3084 
3085 #ifdef AE_COMPILE_NLEQ
3086 #define AE_PARTIAL_BUILD
3087 #define AE_COMPILE_APSERV
3088 #define AE_COMPILE_LINMIN
3089 #define AE_COMPILE_ABLASF
3090 #define AE_COMPILE_ABLASMKL
3091 #define AE_COMPILE_ABLAS
3092 #define AE_COMPILE_ROTATIONS
3093 #define AE_COMPILE_HQRND
3094 #define AE_COMPILE_HBLAS
3095 #define AE_COMPILE_CREFLECTIONS
3096 #define AE_COMPILE_SBLAS
3097 #define AE_COMPILE_ORTFAC
3098 #define AE_COMPILE_FBLS
3099 #endif
3100 
3101 #ifdef AE_COMPILE_MATINV
3102 #define AE_PARTIAL_BUILD
3103 #define AE_COMPILE_APSERV
3104 #define AE_COMPILE_ABLASF
3105 #define AE_COMPILE_ABLASMKL
3106 #define AE_COMPILE_ABLAS
3107 #define AE_COMPILE_SCODES
3108 #define AE_COMPILE_HQRND
3109 #define AE_COMPILE_TSORT
3110 #define AE_COMPILE_SPARSE
3111 #define AE_COMPILE_DLU
3112 #define AE_COMPILE_SPTRF
3113 #define AE_COMPILE_AMDORDERING
3114 #define AE_COMPILE_SPCHOL
3115 #define AE_COMPILE_CREFLECTIONS
3116 #define AE_COMPILE_MATGEN
3117 #define AE_COMPILE_ROTATIONS
3118 #define AE_COMPILE_TRFAC
3119 #define AE_COMPILE_TRLINSOLVE
3120 #define AE_COMPILE_SAFESOLVE
3121 #define AE_COMPILE_RCOND
3122 #endif
3123 
3124 #ifdef AE_COMPILE_OPTGUARDAPI
3125 #define AE_PARTIAL_BUILD
3126 #define AE_COMPILE_APSERV
3127 #endif
3128 
3129 #ifdef AE_COMPILE_OPTSERV
3130 #define AE_PARTIAL_BUILD
3131 #define AE_COMPILE_APSERV
3132 #define AE_COMPILE_TSORT
3133 #define AE_COMPILE_OPTGUARDAPI
3134 #define AE_COMPILE_ABLASF
3135 #define AE_COMPILE_ABLASMKL
3136 #define AE_COMPILE_ABLAS
3137 #define AE_COMPILE_CREFLECTIONS
3138 #define AE_COMPILE_HQRND
3139 #define AE_COMPILE_MATGEN
3140 #define AE_COMPILE_SCODES
3141 #define AE_COMPILE_SPARSE
3142 #define AE_COMPILE_DLU
3143 #define AE_COMPILE_SPTRF
3144 #define AE_COMPILE_AMDORDERING
3145 #define AE_COMPILE_SPCHOL
3146 #define AE_COMPILE_ROTATIONS
3147 #define AE_COMPILE_TRFAC
3148 #define AE_COMPILE_TRLINSOLVE
3149 #define AE_COMPILE_SAFESOLVE
3150 #define AE_COMPILE_RCOND
3151 #define AE_COMPILE_MATINV
3152 #define AE_COMPILE_HBLAS
3153 #define AE_COMPILE_SBLAS
3154 #define AE_COMPILE_ORTFAC
3155 #define AE_COMPILE_BLAS
3156 #define AE_COMPILE_BDSVD
3157 #define AE_COMPILE_SVD
3158 #endif
3159 
3160 #ifdef AE_COMPILE_MINLBFGS
3161 #define AE_PARTIAL_BUILD
3162 #define AE_COMPILE_LINMIN
3163 #define AE_COMPILE_APSERV
3164 #define AE_COMPILE_TSORT
3165 #define AE_COMPILE_OPTGUARDAPI
3166 #define AE_COMPILE_ABLASF
3167 #define AE_COMPILE_ABLASMKL
3168 #define AE_COMPILE_ABLAS
3169 #define AE_COMPILE_CREFLECTIONS
3170 #define AE_COMPILE_HQRND
3171 #define AE_COMPILE_MATGEN
3172 #define AE_COMPILE_SCODES
3173 #define AE_COMPILE_SPARSE
3174 #define AE_COMPILE_DLU
3175 #define AE_COMPILE_SPTRF
3176 #define AE_COMPILE_AMDORDERING
3177 #define AE_COMPILE_SPCHOL
3178 #define AE_COMPILE_ROTATIONS
3179 #define AE_COMPILE_TRFAC
3180 #define AE_COMPILE_TRLINSOLVE
3181 #define AE_COMPILE_SAFESOLVE
3182 #define AE_COMPILE_RCOND
3183 #define AE_COMPILE_MATINV
3184 #define AE_COMPILE_HBLAS
3185 #define AE_COMPILE_SBLAS
3186 #define AE_COMPILE_ORTFAC
3187 #define AE_COMPILE_BLAS
3188 #define AE_COMPILE_BDSVD
3189 #define AE_COMPILE_SVD
3190 #define AE_COMPILE_OPTSERV
3191 #define AE_COMPILE_FBLS
3192 #endif
3193 
3194 #ifdef AE_COMPILE_CQMODELS
3195 #define AE_PARTIAL_BUILD
3196 #define AE_COMPILE_APSERV
3197 #define AE_COMPILE_ABLASF
3198 #define AE_COMPILE_ABLASMKL
3199 #define AE_COMPILE_ABLAS
3200 #define AE_COMPILE_SCODES
3201 #define AE_COMPILE_HQRND
3202 #define AE_COMPILE_TSORT
3203 #define AE_COMPILE_SPARSE
3204 #define AE_COMPILE_DLU
3205 #define AE_COMPILE_SPTRF
3206 #define AE_COMPILE_AMDORDERING
3207 #define AE_COMPILE_SPCHOL
3208 #define AE_COMPILE_CREFLECTIONS
3209 #define AE_COMPILE_MATGEN
3210 #define AE_COMPILE_ROTATIONS
3211 #define AE_COMPILE_TRFAC
3212 #define AE_COMPILE_HBLAS
3213 #define AE_COMPILE_SBLAS
3214 #define AE_COMPILE_ORTFAC
3215 #define AE_COMPILE_FBLS
3216 #endif
3217 
3218 #ifdef AE_COMPILE_LPQPSERV
3219 #define AE_PARTIAL_BUILD
3220 #define AE_COMPILE_APSERV
3221 #define AE_COMPILE_SCODES
3222 #define AE_COMPILE_ABLASMKL
3223 #define AE_COMPILE_ABLASF
3224 #define AE_COMPILE_HQRND
3225 #define AE_COMPILE_TSORT
3226 #define AE_COMPILE_SPARSE
3227 #endif
3228 
3229 #ifdef AE_COMPILE_SNNLS
3230 #define AE_PARTIAL_BUILD
3231 #define AE_COMPILE_APSERV
3232 #define AE_COMPILE_ABLASF
3233 #define AE_COMPILE_ABLASMKL
3234 #define AE_COMPILE_ABLAS
3235 #define AE_COMPILE_SCODES
3236 #define AE_COMPILE_HQRND
3237 #define AE_COMPILE_TSORT
3238 #define AE_COMPILE_SPARSE
3239 #define AE_COMPILE_DLU
3240 #define AE_COMPILE_SPTRF
3241 #define AE_COMPILE_AMDORDERING
3242 #define AE_COMPILE_SPCHOL
3243 #define AE_COMPILE_CREFLECTIONS
3244 #define AE_COMPILE_MATGEN
3245 #define AE_COMPILE_ROTATIONS
3246 #define AE_COMPILE_TRFAC
3247 #define AE_COMPILE_HBLAS
3248 #define AE_COMPILE_SBLAS
3249 #define AE_COMPILE_ORTFAC
3250 #define AE_COMPILE_FBLS
3251 #endif
3252 
3253 #ifdef AE_COMPILE_SACTIVESETS
3254 #define AE_PARTIAL_BUILD
3255 #define AE_COMPILE_APSERV
3256 #define AE_COMPILE_ABLASF
3257 #define AE_COMPILE_ABLASMKL
3258 #define AE_COMPILE_ABLAS
3259 #define AE_COMPILE_SCODES
3260 #define AE_COMPILE_HQRND
3261 #define AE_COMPILE_TSORT
3262 #define AE_COMPILE_SPARSE
3263 #define AE_COMPILE_DLU
3264 #define AE_COMPILE_SPTRF
3265 #define AE_COMPILE_AMDORDERING
3266 #define AE_COMPILE_SPCHOL
3267 #define AE_COMPILE_CREFLECTIONS
3268 #define AE_COMPILE_MATGEN
3269 #define AE_COMPILE_ROTATIONS
3270 #define AE_COMPILE_TRFAC
3271 #define AE_COMPILE_HBLAS
3272 #define AE_COMPILE_SBLAS
3273 #define AE_COMPILE_ORTFAC
3274 #define AE_COMPILE_FBLS
3275 #define AE_COMPILE_SNNLS
3276 #define AE_COMPILE_OPTGUARDAPI
3277 #define AE_COMPILE_TRLINSOLVE
3278 #define AE_COMPILE_SAFESOLVE
3279 #define AE_COMPILE_RCOND
3280 #define AE_COMPILE_MATINV
3281 #define AE_COMPILE_BLAS
3282 #define AE_COMPILE_BDSVD
3283 #define AE_COMPILE_SVD
3284 #define AE_COMPILE_OPTSERV
3285 #endif
3286 
3287 #ifdef AE_COMPILE_QQPSOLVER
3288 #define AE_PARTIAL_BUILD
3289 #define AE_COMPILE_APSERV
3290 #define AE_COMPILE_SCODES
3291 #define AE_COMPILE_ABLASMKL
3292 #define AE_COMPILE_ABLASF
3293 #define AE_COMPILE_HQRND
3294 #define AE_COMPILE_TSORT
3295 #define AE_COMPILE_SPARSE
3296 #define AE_COMPILE_ABLAS
3297 #define AE_COMPILE_DLU
3298 #define AE_COMPILE_SPTRF
3299 #define AE_COMPILE_AMDORDERING
3300 #define AE_COMPILE_SPCHOL
3301 #define AE_COMPILE_CREFLECTIONS
3302 #define AE_COMPILE_MATGEN
3303 #define AE_COMPILE_ROTATIONS
3304 #define AE_COMPILE_TRFAC
3305 #define AE_COMPILE_TRLINSOLVE
3306 #define AE_COMPILE_SAFESOLVE
3307 #define AE_COMPILE_RCOND
3308 #define AE_COMPILE_MATINV
3309 #define AE_COMPILE_HBLAS
3310 #define AE_COMPILE_SBLAS
3311 #define AE_COMPILE_ORTFAC
3312 #define AE_COMPILE_FBLS
3313 #define AE_COMPILE_CQMODELS
3314 #define AE_COMPILE_OPTGUARDAPI
3315 #define AE_COMPILE_BLAS
3316 #define AE_COMPILE_BDSVD
3317 #define AE_COMPILE_SVD
3318 #define AE_COMPILE_OPTSERV
3319 #define AE_COMPILE_SNNLS
3320 #define AE_COMPILE_SACTIVESETS
3321 #endif
3322 
3323 #ifdef AE_COMPILE_QPDENSEAULSOLVER
3324 #define AE_PARTIAL_BUILD
3325 #define AE_COMPILE_APSERV
3326 #define AE_COMPILE_SCODES
3327 #define AE_COMPILE_ABLASMKL
3328 #define AE_COMPILE_ABLASF
3329 #define AE_COMPILE_HQRND
3330 #define AE_COMPILE_TSORT
3331 #define AE_COMPILE_SPARSE
3332 #define AE_COMPILE_ABLAS
3333 #define AE_COMPILE_DLU
3334 #define AE_COMPILE_SPTRF
3335 #define AE_COMPILE_AMDORDERING
3336 #define AE_COMPILE_SPCHOL
3337 #define AE_COMPILE_CREFLECTIONS
3338 #define AE_COMPILE_MATGEN
3339 #define AE_COMPILE_ROTATIONS
3340 #define AE_COMPILE_TRFAC
3341 #define AE_COMPILE_TRLINSOLVE
3342 #define AE_COMPILE_SAFESOLVE
3343 #define AE_COMPILE_RCOND
3344 #define AE_COMPILE_MATINV
3345 #define AE_COMPILE_HBLAS
3346 #define AE_COMPILE_SBLAS
3347 #define AE_COMPILE_ORTFAC
3348 #define AE_COMPILE_BLAS
3349 #define AE_COMPILE_BDSVD
3350 #define AE_COMPILE_SVD
3351 #define AE_COMPILE_XBLAS
3352 #define AE_COMPILE_DIRECTDENSESOLVERS
3353 #define AE_COMPILE_NORMESTIMATOR
3354 #define AE_COMPILE_LINLSQR
3355 #define AE_COMPILE_LINMIN
3356 #define AE_COMPILE_OPTGUARDAPI
3357 #define AE_COMPILE_OPTSERV
3358 #define AE_COMPILE_FBLS
3359 #define AE_COMPILE_MINLBFGS
3360 #define AE_COMPILE_CQMODELS
3361 #define AE_COMPILE_LPQPSERV
3362 #define AE_COMPILE_SNNLS
3363 #define AE_COMPILE_SACTIVESETS
3364 #define AE_COMPILE_QQPSOLVER
3365 #endif
3366 
3367 #ifdef AE_COMPILE_MINBLEIC
3368 #define AE_PARTIAL_BUILD
3369 #define AE_COMPILE_LINMIN
3370 #define AE_COMPILE_APSERV
3371 #define AE_COMPILE_TSORT
3372 #define AE_COMPILE_OPTGUARDAPI
3373 #define AE_COMPILE_ABLASF
3374 #define AE_COMPILE_ABLASMKL
3375 #define AE_COMPILE_ABLAS
3376 #define AE_COMPILE_CREFLECTIONS
3377 #define AE_COMPILE_HQRND
3378 #define AE_COMPILE_MATGEN
3379 #define AE_COMPILE_SCODES
3380 #define AE_COMPILE_SPARSE
3381 #define AE_COMPILE_DLU
3382 #define AE_COMPILE_SPTRF
3383 #define AE_COMPILE_AMDORDERING
3384 #define AE_COMPILE_SPCHOL
3385 #define AE_COMPILE_ROTATIONS
3386 #define AE_COMPILE_TRFAC
3387 #define AE_COMPILE_TRLINSOLVE
3388 #define AE_COMPILE_SAFESOLVE
3389 #define AE_COMPILE_RCOND
3390 #define AE_COMPILE_MATINV
3391 #define AE_COMPILE_HBLAS
3392 #define AE_COMPILE_SBLAS
3393 #define AE_COMPILE_ORTFAC
3394 #define AE_COMPILE_BLAS
3395 #define AE_COMPILE_BDSVD
3396 #define AE_COMPILE_SVD
3397 #define AE_COMPILE_OPTSERV
3398 #define AE_COMPILE_FBLS
3399 #define AE_COMPILE_CQMODELS
3400 #define AE_COMPILE_SNNLS
3401 #define AE_COMPILE_SACTIVESETS
3402 #endif
3403 
3404 #ifdef AE_COMPILE_QPBLEICSOLVER
3405 #define AE_PARTIAL_BUILD
3406 #define AE_COMPILE_APSERV
3407 #define AE_COMPILE_SCODES
3408 #define AE_COMPILE_ABLASMKL
3409 #define AE_COMPILE_ABLASF
3410 #define AE_COMPILE_HQRND
3411 #define AE_COMPILE_TSORT
3412 #define AE_COMPILE_SPARSE
3413 #define AE_COMPILE_ABLAS
3414 #define AE_COMPILE_DLU
3415 #define AE_COMPILE_SPTRF
3416 #define AE_COMPILE_AMDORDERING
3417 #define AE_COMPILE_SPCHOL
3418 #define AE_COMPILE_CREFLECTIONS
3419 #define AE_COMPILE_MATGEN
3420 #define AE_COMPILE_ROTATIONS
3421 #define AE_COMPILE_TRFAC
3422 #define AE_COMPILE_TRLINSOLVE
3423 #define AE_COMPILE_SAFESOLVE
3424 #define AE_COMPILE_RCOND
3425 #define AE_COMPILE_MATINV
3426 #define AE_COMPILE_LINMIN
3427 #define AE_COMPILE_OPTGUARDAPI
3428 #define AE_COMPILE_HBLAS
3429 #define AE_COMPILE_SBLAS
3430 #define AE_COMPILE_ORTFAC
3431 #define AE_COMPILE_BLAS
3432 #define AE_COMPILE_BDSVD
3433 #define AE_COMPILE_SVD
3434 #define AE_COMPILE_OPTSERV
3435 #define AE_COMPILE_FBLS
3436 #define AE_COMPILE_CQMODELS
3437 #define AE_COMPILE_SNNLS
3438 #define AE_COMPILE_SACTIVESETS
3439 #define AE_COMPILE_MINBLEIC
3440 #endif
3441 
3442 #ifdef AE_COMPILE_VIPMSOLVER
3443 #define AE_PARTIAL_BUILD
3444 #define AE_COMPILE_APSERV
3445 #define AE_COMPILE_SCODES
3446 #define AE_COMPILE_ABLASMKL
3447 #define AE_COMPILE_ABLASF
3448 #define AE_COMPILE_HQRND
3449 #define AE_COMPILE_TSORT
3450 #define AE_COMPILE_SPARSE
3451 #define AE_COMPILE_HBLAS
3452 #define AE_COMPILE_CREFLECTIONS
3453 #define AE_COMPILE_SBLAS
3454 #define AE_COMPILE_ABLAS
3455 #define AE_COMPILE_ORTFAC
3456 #define AE_COMPILE_BLAS
3457 #define AE_COMPILE_ROTATIONS
3458 #define AE_COMPILE_BDSVD
3459 #define AE_COMPILE_SVD
3460 #define AE_COMPILE_DLU
3461 #define AE_COMPILE_SPTRF
3462 #define AE_COMPILE_AMDORDERING
3463 #define AE_COMPILE_SPCHOL
3464 #define AE_COMPILE_MATGEN
3465 #define AE_COMPILE_TRFAC
3466 #define AE_COMPILE_TRLINSOLVE
3467 #define AE_COMPILE_SAFESOLVE
3468 #define AE_COMPILE_RCOND
3469 #define AE_COMPILE_XBLAS
3470 #define AE_COMPILE_DIRECTDENSESOLVERS
3471 #define AE_COMPILE_LINMIN
3472 #define AE_COMPILE_OPTGUARDAPI
3473 #define AE_COMPILE_MATINV
3474 #define AE_COMPILE_OPTSERV
3475 #define AE_COMPILE_FBLS
3476 #define AE_COMPILE_MINLBFGS
3477 #define AE_COMPILE_CQMODELS
3478 #define AE_COMPILE_LPQPSERV
3479 #endif
3480 
3481 #ifdef AE_COMPILE_MINQP
3482 #define AE_PARTIAL_BUILD
3483 #define AE_COMPILE_APSERV
3484 #define AE_COMPILE_SCODES
3485 #define AE_COMPILE_ABLASMKL
3486 #define AE_COMPILE_ABLASF
3487 #define AE_COMPILE_HQRND
3488 #define AE_COMPILE_TSORT
3489 #define AE_COMPILE_SPARSE
3490 #define AE_COMPILE_ABLAS
3491 #define AE_COMPILE_DLU
3492 #define AE_COMPILE_SPTRF
3493 #define AE_COMPILE_AMDORDERING
3494 #define AE_COMPILE_SPCHOL
3495 #define AE_COMPILE_CREFLECTIONS
3496 #define AE_COMPILE_MATGEN
3497 #define AE_COMPILE_ROTATIONS
3498 #define AE_COMPILE_TRFAC
3499 #define AE_COMPILE_TRLINSOLVE
3500 #define AE_COMPILE_SAFESOLVE
3501 #define AE_COMPILE_RCOND
3502 #define AE_COMPILE_MATINV
3503 #define AE_COMPILE_HBLAS
3504 #define AE_COMPILE_SBLAS
3505 #define AE_COMPILE_ORTFAC
3506 #define AE_COMPILE_BLAS
3507 #define AE_COMPILE_BDSVD
3508 #define AE_COMPILE_SVD
3509 #define AE_COMPILE_XBLAS
3510 #define AE_COMPILE_DIRECTDENSESOLVERS
3511 #define AE_COMPILE_NORMESTIMATOR
3512 #define AE_COMPILE_LINLSQR
3513 #define AE_COMPILE_LINMIN
3514 #define AE_COMPILE_OPTGUARDAPI
3515 #define AE_COMPILE_OPTSERV
3516 #define AE_COMPILE_FBLS
3517 #define AE_COMPILE_MINLBFGS
3518 #define AE_COMPILE_CQMODELS
3519 #define AE_COMPILE_LPQPSERV
3520 #define AE_COMPILE_SNNLS
3521 #define AE_COMPILE_SACTIVESETS
3522 #define AE_COMPILE_QQPSOLVER
3523 #define AE_COMPILE_QPDENSEAULSOLVER
3524 #define AE_COMPILE_MINBLEIC
3525 #define AE_COMPILE_QPBLEICSOLVER
3526 #define AE_COMPILE_VIPMSOLVER
3527 #endif
3528 
3529 #ifdef AE_COMPILE_MINLM
3530 #define AE_PARTIAL_BUILD
3531 #define AE_COMPILE_APSERV
3532 #define AE_COMPILE_TSORT
3533 #define AE_COMPILE_OPTGUARDAPI
3534 #define AE_COMPILE_ABLASF
3535 #define AE_COMPILE_ABLASMKL
3536 #define AE_COMPILE_ABLAS
3537 #define AE_COMPILE_CREFLECTIONS
3538 #define AE_COMPILE_HQRND
3539 #define AE_COMPILE_MATGEN
3540 #define AE_COMPILE_SCODES
3541 #define AE_COMPILE_SPARSE
3542 #define AE_COMPILE_DLU
3543 #define AE_COMPILE_SPTRF
3544 #define AE_COMPILE_AMDORDERING
3545 #define AE_COMPILE_SPCHOL
3546 #define AE_COMPILE_ROTATIONS
3547 #define AE_COMPILE_TRFAC
3548 #define AE_COMPILE_TRLINSOLVE
3549 #define AE_COMPILE_SAFESOLVE
3550 #define AE_COMPILE_RCOND
3551 #define AE_COMPILE_MATINV
3552 #define AE_COMPILE_HBLAS
3553 #define AE_COMPILE_SBLAS
3554 #define AE_COMPILE_ORTFAC
3555 #define AE_COMPILE_BLAS
3556 #define AE_COMPILE_BDSVD
3557 #define AE_COMPILE_SVD
3558 #define AE_COMPILE_OPTSERV
3559 #define AE_COMPILE_XBLAS
3560 #define AE_COMPILE_DIRECTDENSESOLVERS
3561 #define AE_COMPILE_NORMESTIMATOR
3562 #define AE_COMPILE_LINLSQR
3563 #define AE_COMPILE_LINMIN
3564 #define AE_COMPILE_FBLS
3565 #define AE_COMPILE_MINLBFGS
3566 #define AE_COMPILE_CQMODELS
3567 #define AE_COMPILE_LPQPSERV
3568 #define AE_COMPILE_SNNLS
3569 #define AE_COMPILE_SACTIVESETS
3570 #define AE_COMPILE_QQPSOLVER
3571 #define AE_COMPILE_QPDENSEAULSOLVER
3572 #define AE_COMPILE_MINBLEIC
3573 #define AE_COMPILE_QPBLEICSOLVER
3574 #define AE_COMPILE_VIPMSOLVER
3575 #define AE_COMPILE_MINQP
3576 #endif
3577 
3578 #ifdef AE_COMPILE_MINCG
3579 #define AE_PARTIAL_BUILD
3580 #define AE_COMPILE_LINMIN
3581 #define AE_COMPILE_APSERV
3582 #define AE_COMPILE_TSORT
3583 #define AE_COMPILE_OPTGUARDAPI
3584 #define AE_COMPILE_ABLASF
3585 #define AE_COMPILE_ABLASMKL
3586 #define AE_COMPILE_ABLAS
3587 #define AE_COMPILE_CREFLECTIONS
3588 #define AE_COMPILE_HQRND
3589 #define AE_COMPILE_MATGEN
3590 #define AE_COMPILE_SCODES
3591 #define AE_COMPILE_SPARSE
3592 #define AE_COMPILE_DLU
3593 #define AE_COMPILE_SPTRF
3594 #define AE_COMPILE_AMDORDERING
3595 #define AE_COMPILE_SPCHOL
3596 #define AE_COMPILE_ROTATIONS
3597 #define AE_COMPILE_TRFAC
3598 #define AE_COMPILE_TRLINSOLVE
3599 #define AE_COMPILE_SAFESOLVE
3600 #define AE_COMPILE_RCOND
3601 #define AE_COMPILE_MATINV
3602 #define AE_COMPILE_HBLAS
3603 #define AE_COMPILE_SBLAS
3604 #define AE_COMPILE_ORTFAC
3605 #define AE_COMPILE_BLAS
3606 #define AE_COMPILE_BDSVD
3607 #define AE_COMPILE_SVD
3608 #define AE_COMPILE_OPTSERV
3609 #endif
3610 
3611 #ifdef AE_COMPILE_NLCSQP
3612 #define AE_PARTIAL_BUILD
3613 #define AE_COMPILE_LINMIN
3614 #define AE_COMPILE_APSERV
3615 #define AE_COMPILE_ABLASF
3616 #define AE_COMPILE_TSORT
3617 #define AE_COMPILE_OPTGUARDAPI
3618 #define AE_COMPILE_ABLASMKL
3619 #define AE_COMPILE_ABLAS
3620 #define AE_COMPILE_CREFLECTIONS
3621 #define AE_COMPILE_HQRND
3622 #define AE_COMPILE_MATGEN
3623 #define AE_COMPILE_SCODES
3624 #define AE_COMPILE_SPARSE
3625 #define AE_COMPILE_DLU
3626 #define AE_COMPILE_SPTRF
3627 #define AE_COMPILE_AMDORDERING
3628 #define AE_COMPILE_SPCHOL
3629 #define AE_COMPILE_ROTATIONS
3630 #define AE_COMPILE_TRFAC
3631 #define AE_COMPILE_TRLINSOLVE
3632 #define AE_COMPILE_SAFESOLVE
3633 #define AE_COMPILE_RCOND
3634 #define AE_COMPILE_MATINV
3635 #define AE_COMPILE_HBLAS
3636 #define AE_COMPILE_SBLAS
3637 #define AE_COMPILE_ORTFAC
3638 #define AE_COMPILE_BLAS
3639 #define AE_COMPILE_BDSVD
3640 #define AE_COMPILE_SVD
3641 #define AE_COMPILE_OPTSERV
3642 #define AE_COMPILE_XBLAS
3643 #define AE_COMPILE_DIRECTDENSESOLVERS
3644 #define AE_COMPILE_FBLS
3645 #define AE_COMPILE_MINLBFGS
3646 #define AE_COMPILE_CQMODELS
3647 #define AE_COMPILE_LPQPSERV
3648 #define AE_COMPILE_VIPMSOLVER
3649 #endif
3650 
3651 #ifdef AE_COMPILE_LPQPPRESOLVE
3652 #define AE_PARTIAL_BUILD
3653 #define AE_COMPILE_APSERV
3654 #define AE_COMPILE_ABLASF
3655 #define AE_COMPILE_SCODES
3656 #define AE_COMPILE_ABLASMKL
3657 #define AE_COMPILE_HQRND
3658 #define AE_COMPILE_TSORT
3659 #define AE_COMPILE_SPARSE
3660 #endif
3661 
3662 #ifdef AE_COMPILE_REVISEDDUALSIMPLEX
3663 #define AE_PARTIAL_BUILD
3664 #define AE_COMPILE_APSERV
3665 #define AE_COMPILE_ABLASF
3666 #define AE_COMPILE_ABLASMKL
3667 #define AE_COMPILE_ABLAS
3668 #define AE_COMPILE_SCODES
3669 #define AE_COMPILE_HQRND
3670 #define AE_COMPILE_TSORT
3671 #define AE_COMPILE_SPARSE
3672 #define AE_COMPILE_DLU
3673 #define AE_COMPILE_SPTRF
3674 #define AE_COMPILE_AMDORDERING
3675 #define AE_COMPILE_SPCHOL
3676 #define AE_COMPILE_CREFLECTIONS
3677 #define AE_COMPILE_MATGEN
3678 #define AE_COMPILE_ROTATIONS
3679 #define AE_COMPILE_TRFAC
3680 #define AE_COMPILE_LPQPPRESOLVE
3681 #endif
3682 
3683 #ifdef AE_COMPILE_MINLP
3684 #define AE_PARTIAL_BUILD
3685 #define AE_COMPILE_APSERV
3686 #define AE_COMPILE_SCODES
3687 #define AE_COMPILE_ABLASMKL
3688 #define AE_COMPILE_ABLASF
3689 #define AE_COMPILE_HQRND
3690 #define AE_COMPILE_TSORT
3691 #define AE_COMPILE_SPARSE
3692 #define AE_COMPILE_ABLAS
3693 #define AE_COMPILE_DLU
3694 #define AE_COMPILE_SPTRF
3695 #define AE_COMPILE_AMDORDERING
3696 #define AE_COMPILE_SPCHOL
3697 #define AE_COMPILE_CREFLECTIONS
3698 #define AE_COMPILE_MATGEN
3699 #define AE_COMPILE_ROTATIONS
3700 #define AE_COMPILE_TRFAC
3701 #define AE_COMPILE_LPQPPRESOLVE
3702 #define AE_COMPILE_REVISEDDUALSIMPLEX
3703 #define AE_COMPILE_HBLAS
3704 #define AE_COMPILE_SBLAS
3705 #define AE_COMPILE_ORTFAC
3706 #define AE_COMPILE_BLAS
3707 #define AE_COMPILE_BDSVD
3708 #define AE_COMPILE_SVD
3709 #define AE_COMPILE_TRLINSOLVE
3710 #define AE_COMPILE_SAFESOLVE
3711 #define AE_COMPILE_RCOND
3712 #define AE_COMPILE_XBLAS
3713 #define AE_COMPILE_DIRECTDENSESOLVERS
3714 #define AE_COMPILE_LINMIN
3715 #define AE_COMPILE_OPTGUARDAPI
3716 #define AE_COMPILE_MATINV
3717 #define AE_COMPILE_OPTSERV
3718 #define AE_COMPILE_FBLS
3719 #define AE_COMPILE_MINLBFGS
3720 #define AE_COMPILE_CQMODELS
3721 #define AE_COMPILE_LPQPSERV
3722 #define AE_COMPILE_VIPMSOLVER
3723 #endif
3724 
3725 #ifdef AE_COMPILE_NLCSLP
3726 #define AE_PARTIAL_BUILD
3727 #define AE_COMPILE_LINMIN
3728 #define AE_COMPILE_APSERV
3729 #define AE_COMPILE_TSORT
3730 #define AE_COMPILE_OPTGUARDAPI
3731 #define AE_COMPILE_ABLASF
3732 #define AE_COMPILE_ABLASMKL
3733 #define AE_COMPILE_ABLAS
3734 #define AE_COMPILE_CREFLECTIONS
3735 #define AE_COMPILE_HQRND
3736 #define AE_COMPILE_MATGEN
3737 #define AE_COMPILE_SCODES
3738 #define AE_COMPILE_SPARSE
3739 #define AE_COMPILE_DLU
3740 #define AE_COMPILE_SPTRF
3741 #define AE_COMPILE_AMDORDERING
3742 #define AE_COMPILE_SPCHOL
3743 #define AE_COMPILE_ROTATIONS
3744 #define AE_COMPILE_TRFAC
3745 #define AE_COMPILE_TRLINSOLVE
3746 #define AE_COMPILE_SAFESOLVE
3747 #define AE_COMPILE_RCOND
3748 #define AE_COMPILE_MATINV
3749 #define AE_COMPILE_HBLAS
3750 #define AE_COMPILE_SBLAS
3751 #define AE_COMPILE_ORTFAC
3752 #define AE_COMPILE_BLAS
3753 #define AE_COMPILE_BDSVD
3754 #define AE_COMPILE_SVD
3755 #define AE_COMPILE_OPTSERV
3756 #define AE_COMPILE_LPQPPRESOLVE
3757 #define AE_COMPILE_REVISEDDUALSIMPLEX
3758 #endif
3759 
3760 #ifdef AE_COMPILE_MINNLC
3761 #define AE_PARTIAL_BUILD
3762 #define AE_COMPILE_LINMIN
3763 #define AE_COMPILE_APSERV
3764 #define AE_COMPILE_TSORT
3765 #define AE_COMPILE_OPTGUARDAPI
3766 #define AE_COMPILE_ABLASF
3767 #define AE_COMPILE_ABLASMKL
3768 #define AE_COMPILE_ABLAS
3769 #define AE_COMPILE_CREFLECTIONS
3770 #define AE_COMPILE_HQRND
3771 #define AE_COMPILE_MATGEN
3772 #define AE_COMPILE_SCODES
3773 #define AE_COMPILE_SPARSE
3774 #define AE_COMPILE_DLU
3775 #define AE_COMPILE_SPTRF
3776 #define AE_COMPILE_AMDORDERING
3777 #define AE_COMPILE_SPCHOL
3778 #define AE_COMPILE_ROTATIONS
3779 #define AE_COMPILE_TRFAC
3780 #define AE_COMPILE_TRLINSOLVE
3781 #define AE_COMPILE_SAFESOLVE
3782 #define AE_COMPILE_RCOND
3783 #define AE_COMPILE_MATINV
3784 #define AE_COMPILE_HBLAS
3785 #define AE_COMPILE_SBLAS
3786 #define AE_COMPILE_ORTFAC
3787 #define AE_COMPILE_BLAS
3788 #define AE_COMPILE_BDSVD
3789 #define AE_COMPILE_SVD
3790 #define AE_COMPILE_OPTSERV
3791 #define AE_COMPILE_FBLS
3792 #define AE_COMPILE_SNNLS
3793 #define AE_COMPILE_MINLBFGS
3794 #define AE_COMPILE_CQMODELS
3795 #define AE_COMPILE_SACTIVESETS
3796 #define AE_COMPILE_MINBLEIC
3797 #define AE_COMPILE_LPQPPRESOLVE
3798 #define AE_COMPILE_REVISEDDUALSIMPLEX
3799 #define AE_COMPILE_NLCSLP
3800 #define AE_COMPILE_XBLAS
3801 #define AE_COMPILE_DIRECTDENSESOLVERS
3802 #define AE_COMPILE_LPQPSERV
3803 #define AE_COMPILE_VIPMSOLVER
3804 #define AE_COMPILE_NLCSQP
3805 #endif
3806 
3807 #ifdef AE_COMPILE_MINNS
3808 #define AE_PARTIAL_BUILD
3809 #define AE_COMPILE_LINMIN
3810 #define AE_COMPILE_APSERV
3811 #define AE_COMPILE_TSORT
3812 #define AE_COMPILE_OPTGUARDAPI
3813 #define AE_COMPILE_ABLASF
3814 #define AE_COMPILE_ABLASMKL
3815 #define AE_COMPILE_ABLAS
3816 #define AE_COMPILE_CREFLECTIONS
3817 #define AE_COMPILE_HQRND
3818 #define AE_COMPILE_MATGEN
3819 #define AE_COMPILE_SCODES
3820 #define AE_COMPILE_SPARSE
3821 #define AE_COMPILE_DLU
3822 #define AE_COMPILE_SPTRF
3823 #define AE_COMPILE_AMDORDERING
3824 #define AE_COMPILE_SPCHOL
3825 #define AE_COMPILE_ROTATIONS
3826 #define AE_COMPILE_TRFAC
3827 #define AE_COMPILE_TRLINSOLVE
3828 #define AE_COMPILE_SAFESOLVE
3829 #define AE_COMPILE_RCOND
3830 #define AE_COMPILE_MATINV
3831 #define AE_COMPILE_HBLAS
3832 #define AE_COMPILE_SBLAS
3833 #define AE_COMPILE_ORTFAC
3834 #define AE_COMPILE_BLAS
3835 #define AE_COMPILE_BDSVD
3836 #define AE_COMPILE_SVD
3837 #define AE_COMPILE_OPTSERV
3838 #define AE_COMPILE_FBLS
3839 #define AE_COMPILE_SNNLS
3840 #define AE_COMPILE_CQMODELS
3841 #define AE_COMPILE_SACTIVESETS
3842 #define AE_COMPILE_MINBLEIC
3843 #endif
3844 
3845 #ifdef AE_COMPILE_MINCOMP
3846 #define AE_PARTIAL_BUILD
3847 #define AE_COMPILE_LINMIN
3848 #define AE_COMPILE_APSERV
3849 #define AE_COMPILE_TSORT
3850 #define AE_COMPILE_OPTGUARDAPI
3851 #define AE_COMPILE_ABLASF
3852 #define AE_COMPILE_ABLASMKL
3853 #define AE_COMPILE_ABLAS
3854 #define AE_COMPILE_CREFLECTIONS
3855 #define AE_COMPILE_HQRND
3856 #define AE_COMPILE_MATGEN
3857 #define AE_COMPILE_SCODES
3858 #define AE_COMPILE_SPARSE
3859 #define AE_COMPILE_DLU
3860 #define AE_COMPILE_SPTRF
3861 #define AE_COMPILE_AMDORDERING
3862 #define AE_COMPILE_SPCHOL
3863 #define AE_COMPILE_ROTATIONS
3864 #define AE_COMPILE_TRFAC
3865 #define AE_COMPILE_TRLINSOLVE
3866 #define AE_COMPILE_SAFESOLVE
3867 #define AE_COMPILE_RCOND
3868 #define AE_COMPILE_MATINV
3869 #define AE_COMPILE_HBLAS
3870 #define AE_COMPILE_SBLAS
3871 #define AE_COMPILE_ORTFAC
3872 #define AE_COMPILE_BLAS
3873 #define AE_COMPILE_BDSVD
3874 #define AE_COMPILE_SVD
3875 #define AE_COMPILE_OPTSERV
3876 #define AE_COMPILE_FBLS
3877 #define AE_COMPILE_MINLBFGS
3878 #define AE_COMPILE_CQMODELS
3879 #define AE_COMPILE_SNNLS
3880 #define AE_COMPILE_SACTIVESETS
3881 #define AE_COMPILE_MINBLEIC
3882 #endif
3883 
3884 #ifdef AE_COMPILE_MINBC
3885 #define AE_PARTIAL_BUILD
3886 #define AE_COMPILE_LINMIN
3887 #define AE_COMPILE_APSERV
3888 #define AE_COMPILE_TSORT
3889 #define AE_COMPILE_OPTGUARDAPI
3890 #define AE_COMPILE_ABLASF
3891 #define AE_COMPILE_ABLASMKL
3892 #define AE_COMPILE_ABLAS
3893 #define AE_COMPILE_CREFLECTIONS
3894 #define AE_COMPILE_HQRND
3895 #define AE_COMPILE_MATGEN
3896 #define AE_COMPILE_SCODES
3897 #define AE_COMPILE_SPARSE
3898 #define AE_COMPILE_DLU
3899 #define AE_COMPILE_SPTRF
3900 #define AE_COMPILE_AMDORDERING
3901 #define AE_COMPILE_SPCHOL
3902 #define AE_COMPILE_ROTATIONS
3903 #define AE_COMPILE_TRFAC
3904 #define AE_COMPILE_TRLINSOLVE
3905 #define AE_COMPILE_SAFESOLVE
3906 #define AE_COMPILE_RCOND
3907 #define AE_COMPILE_MATINV
3908 #define AE_COMPILE_HBLAS
3909 #define AE_COMPILE_SBLAS
3910 #define AE_COMPILE_ORTFAC
3911 #define AE_COMPILE_BLAS
3912 #define AE_COMPILE_BDSVD
3913 #define AE_COMPILE_SVD
3914 #define AE_COMPILE_OPTSERV
3915 #endif
3916 
3917 #ifdef AE_COMPILE_OPTS
3918 #define AE_PARTIAL_BUILD
3919 #define AE_COMPILE_APSERV
3920 #define AE_COMPILE_SCODES
3921 #define AE_COMPILE_ABLASMKL
3922 #define AE_COMPILE_ABLASF
3923 #define AE_COMPILE_HQRND
3924 #define AE_COMPILE_TSORT
3925 #define AE_COMPILE_SPARSE
3926 #define AE_COMPILE_ABLAS
3927 #define AE_COMPILE_DLU
3928 #define AE_COMPILE_SPTRF
3929 #define AE_COMPILE_AMDORDERING
3930 #define AE_COMPILE_SPCHOL
3931 #define AE_COMPILE_CREFLECTIONS
3932 #define AE_COMPILE_MATGEN
3933 #define AE_COMPILE_ROTATIONS
3934 #define AE_COMPILE_TRFAC
3935 #define AE_COMPILE_LPQPPRESOLVE
3936 #define AE_COMPILE_REVISEDDUALSIMPLEX
3937 #define AE_COMPILE_HBLAS
3938 #define AE_COMPILE_SBLAS
3939 #define AE_COMPILE_ORTFAC
3940 #define AE_COMPILE_BLAS
3941 #define AE_COMPILE_BDSVD
3942 #define AE_COMPILE_SVD
3943 #define AE_COMPILE_TRLINSOLVE
3944 #define AE_COMPILE_SAFESOLVE
3945 #define AE_COMPILE_RCOND
3946 #define AE_COMPILE_XBLAS
3947 #define AE_COMPILE_DIRECTDENSESOLVERS
3948 #define AE_COMPILE_LINMIN
3949 #define AE_COMPILE_OPTGUARDAPI
3950 #define AE_COMPILE_MATINV
3951 #define AE_COMPILE_OPTSERV
3952 #define AE_COMPILE_FBLS
3953 #define AE_COMPILE_MINLBFGS
3954 #define AE_COMPILE_CQMODELS
3955 #define AE_COMPILE_LPQPSERV
3956 #define AE_COMPILE_VIPMSOLVER
3957 #define AE_COMPILE_MINLP
3958 #endif
3959 
3960 #ifdef AE_COMPILE_XDEBUG
3961 #define AE_PARTIAL_BUILD
3962 #endif
3963 
3964 #ifdef AE_COMPILE_NEARESTNEIGHBOR
3965 #define AE_PARTIAL_BUILD
3966 #define AE_COMPILE_SCODES
3967 #define AE_COMPILE_APSERV
3968 #define AE_COMPILE_TSORT
3969 #endif
3970 
3971 #ifdef AE_COMPILE_ODESOLVER
3972 #define AE_PARTIAL_BUILD
3973 #define AE_COMPILE_APSERV
3974 #endif
3975 
3976 #ifdef AE_COMPILE_INVERSEUPDATE
3977 #define AE_PARTIAL_BUILD
3978 #endif
3979 
3980 #ifdef AE_COMPILE_SCHUR
3981 #define AE_PARTIAL_BUILD
3982 #define AE_COMPILE_APSERV
3983 #define AE_COMPILE_ABLASF
3984 #define AE_COMPILE_HQRND
3985 #define AE_COMPILE_HBLAS
3986 #define AE_COMPILE_CREFLECTIONS
3987 #define AE_COMPILE_SBLAS
3988 #define AE_COMPILE_ABLASMKL
3989 #define AE_COMPILE_ABLAS
3990 #define AE_COMPILE_ORTFAC
3991 #define AE_COMPILE_BLAS
3992 #define AE_COMPILE_ROTATIONS
3993 #define AE_COMPILE_HSSCHUR
3994 #endif
3995 
3996 #ifdef AE_COMPILE_SPDGEVD
3997 #define AE_PARTIAL_BUILD
3998 #define AE_COMPILE_APSERV
3999 #define AE_COMPILE_ABLASF
4000 #define AE_COMPILE_ABLASMKL
4001 #define AE_COMPILE_ABLAS
4002 #define AE_COMPILE_SCODES
4003 #define AE_COMPILE_HQRND
4004 #define AE_COMPILE_TSORT
4005 #define AE_COMPILE_SPARSE
4006 #define AE_COMPILE_DLU
4007 #define AE_COMPILE_SPTRF
4008 #define AE_COMPILE_AMDORDERING
4009 #define AE_COMPILE_SPCHOL
4010 #define AE_COMPILE_CREFLECTIONS
4011 #define AE_COMPILE_MATGEN
4012 #define AE_COMPILE_ROTATIONS
4013 #define AE_COMPILE_TRFAC
4014 #define AE_COMPILE_SBLAS
4015 #define AE_COMPILE_BLAS
4016 #define AE_COMPILE_TRLINSOLVE
4017 #define AE_COMPILE_SAFESOLVE
4018 #define AE_COMPILE_RCOND
4019 #define AE_COMPILE_MATINV
4020 #define AE_COMPILE_HBLAS
4021 #define AE_COMPILE_ORTFAC
4022 #define AE_COMPILE_HSSCHUR
4023 #define AE_COMPILE_BASICSTATOPS
4024 #define AE_COMPILE_EVD
4025 #endif
4026 
4027 #ifdef AE_COMPILE_MATDET
4028 #define AE_PARTIAL_BUILD
4029 #define AE_COMPILE_APSERV
4030 #define AE_COMPILE_ABLASF
4031 #define AE_COMPILE_ABLASMKL
4032 #define AE_COMPILE_ABLAS
4033 #define AE_COMPILE_SCODES
4034 #define AE_COMPILE_HQRND
4035 #define AE_COMPILE_TSORT
4036 #define AE_COMPILE_SPARSE
4037 #define AE_COMPILE_DLU
4038 #define AE_COMPILE_SPTRF
4039 #define AE_COMPILE_AMDORDERING
4040 #define AE_COMPILE_SPCHOL
4041 #define AE_COMPILE_CREFLECTIONS
4042 #define AE_COMPILE_MATGEN
4043 #define AE_COMPILE_ROTATIONS
4044 #define AE_COMPILE_TRFAC
4045 #endif
4046 
4047 #ifdef AE_COMPILE_GAMMAFUNC
4048 #define AE_PARTIAL_BUILD
4049 #endif
4050 
4051 #ifdef AE_COMPILE_GQ
4052 #define AE_PARTIAL_BUILD
4053 #define AE_COMPILE_APSERV
4054 #define AE_COMPILE_ABLASF
4055 #define AE_COMPILE_HQRND
4056 #define AE_COMPILE_HBLAS
4057 #define AE_COMPILE_CREFLECTIONS
4058 #define AE_COMPILE_SBLAS
4059 #define AE_COMPILE_ABLASMKL
4060 #define AE_COMPILE_ABLAS
4061 #define AE_COMPILE_ORTFAC
4062 #define AE_COMPILE_MATGEN
4063 #define AE_COMPILE_SCODES
4064 #define AE_COMPILE_TSORT
4065 #define AE_COMPILE_SPARSE
4066 #define AE_COMPILE_BLAS
4067 #define AE_COMPILE_ROTATIONS
4068 #define AE_COMPILE_HSSCHUR
4069 #define AE_COMPILE_BASICSTATOPS
4070 #define AE_COMPILE_EVD
4071 #define AE_COMPILE_GAMMAFUNC
4072 #endif
4073 
4074 #ifdef AE_COMPILE_GKQ
4075 #define AE_PARTIAL_BUILD
4076 #define AE_COMPILE_APSERV
4077 #define AE_COMPILE_TSORT
4078 #define AE_COMPILE_ABLASF
4079 #define AE_COMPILE_HQRND
4080 #define AE_COMPILE_HBLAS
4081 #define AE_COMPILE_CREFLECTIONS
4082 #define AE_COMPILE_SBLAS
4083 #define AE_COMPILE_ABLASMKL
4084 #define AE_COMPILE_ABLAS
4085 #define AE_COMPILE_ORTFAC
4086 #define AE_COMPILE_MATGEN
4087 #define AE_COMPILE_SCODES
4088 #define AE_COMPILE_SPARSE
4089 #define AE_COMPILE_BLAS
4090 #define AE_COMPILE_ROTATIONS
4091 #define AE_COMPILE_HSSCHUR
4092 #define AE_COMPILE_BASICSTATOPS
4093 #define AE_COMPILE_EVD
4094 #define AE_COMPILE_GAMMAFUNC
4095 #define AE_COMPILE_GQ
4096 #endif
4097 
4098 #ifdef AE_COMPILE_AUTOGK
4099 #define AE_PARTIAL_BUILD
4100 #define AE_COMPILE_APSERV
4101 #define AE_COMPILE_TSORT
4102 #define AE_COMPILE_ABLASF
4103 #define AE_COMPILE_HQRND
4104 #define AE_COMPILE_HBLAS
4105 #define AE_COMPILE_CREFLECTIONS
4106 #define AE_COMPILE_SBLAS
4107 #define AE_COMPILE_ABLASMKL
4108 #define AE_COMPILE_ABLAS
4109 #define AE_COMPILE_ORTFAC
4110 #define AE_COMPILE_MATGEN
4111 #define AE_COMPILE_SCODES
4112 #define AE_COMPILE_SPARSE
4113 #define AE_COMPILE_BLAS
4114 #define AE_COMPILE_ROTATIONS
4115 #define AE_COMPILE_HSSCHUR
4116 #define AE_COMPILE_BASICSTATOPS
4117 #define AE_COMPILE_EVD
4118 #define AE_COMPILE_GAMMAFUNC
4119 #define AE_COMPILE_GQ
4120 #define AE_COMPILE_GKQ
4121 #endif
4122 
4123 #ifdef AE_COMPILE_NORMALDISTR
4124 #define AE_PARTIAL_BUILD
4125 #define AE_COMPILE_APSERV
4126 #define AE_COMPILE_ABLASF
4127 #define AE_COMPILE_HQRND
4128 #endif
4129 
4130 #ifdef AE_COMPILE_IBETAF
4131 #define AE_PARTIAL_BUILD
4132 #define AE_COMPILE_GAMMAFUNC
4133 #define AE_COMPILE_APSERV
4134 #define AE_COMPILE_ABLASF
4135 #define AE_COMPILE_HQRND
4136 #define AE_COMPILE_NORMALDISTR
4137 #endif
4138 
4139 #ifdef AE_COMPILE_STUDENTTDISTR
4140 #define AE_PARTIAL_BUILD
4141 #define AE_COMPILE_GAMMAFUNC
4142 #define AE_COMPILE_APSERV
4143 #define AE_COMPILE_ABLASF
4144 #define AE_COMPILE_HQRND
4145 #define AE_COMPILE_NORMALDISTR
4146 #define AE_COMPILE_IBETAF
4147 #endif
4148 
4149 #ifdef AE_COMPILE_BASESTAT
4150 #define AE_PARTIAL_BUILD
4151 #define AE_COMPILE_APSERV
4152 #define AE_COMPILE_TSORT
4153 #define AE_COMPILE_BASICSTATOPS
4154 #define AE_COMPILE_ABLASF
4155 #define AE_COMPILE_ABLASMKL
4156 #define AE_COMPILE_ABLAS
4157 #endif
4158 
4159 #ifdef AE_COMPILE_CORRELATIONTESTS
4160 #define AE_PARTIAL_BUILD
4161 #define AE_COMPILE_GAMMAFUNC
4162 #define AE_COMPILE_APSERV
4163 #define AE_COMPILE_ABLASF
4164 #define AE_COMPILE_HQRND
4165 #define AE_COMPILE_NORMALDISTR
4166 #define AE_COMPILE_IBETAF
4167 #define AE_COMPILE_STUDENTTDISTR
4168 #define AE_COMPILE_TSORT
4169 #define AE_COMPILE_BASICSTATOPS
4170 #define AE_COMPILE_ABLASMKL
4171 #define AE_COMPILE_ABLAS
4172 #define AE_COMPILE_BASESTAT
4173 #endif
4174 
4175 #ifdef AE_COMPILE_JARQUEBERA
4176 #define AE_PARTIAL_BUILD
4177 #endif
4178 
4179 #ifdef AE_COMPILE_FDISTR
4180 #define AE_PARTIAL_BUILD
4181 #define AE_COMPILE_GAMMAFUNC
4182 #define AE_COMPILE_APSERV
4183 #define AE_COMPILE_ABLASF
4184 #define AE_COMPILE_HQRND
4185 #define AE_COMPILE_NORMALDISTR
4186 #define AE_COMPILE_IBETAF
4187 #endif
4188 
4189 #ifdef AE_COMPILE_IGAMMAF
4190 #define AE_PARTIAL_BUILD
4191 #define AE_COMPILE_GAMMAFUNC
4192 #define AE_COMPILE_APSERV
4193 #define AE_COMPILE_ABLASF
4194 #define AE_COMPILE_HQRND
4195 #define AE_COMPILE_NORMALDISTR
4196 #endif
4197 
4198 #ifdef AE_COMPILE_CHISQUAREDISTR
4199 #define AE_PARTIAL_BUILD
4200 #define AE_COMPILE_GAMMAFUNC
4201 #define AE_COMPILE_APSERV
4202 #define AE_COMPILE_ABLASF
4203 #define AE_COMPILE_HQRND
4204 #define AE_COMPILE_NORMALDISTR
4205 #define AE_COMPILE_IGAMMAF
4206 #endif
4207 
4208 #ifdef AE_COMPILE_VARIANCETESTS
4209 #define AE_PARTIAL_BUILD
4210 #define AE_COMPILE_GAMMAFUNC
4211 #define AE_COMPILE_APSERV
4212 #define AE_COMPILE_ABLASF
4213 #define AE_COMPILE_HQRND
4214 #define AE_COMPILE_NORMALDISTR
4215 #define AE_COMPILE_IBETAF
4216 #define AE_COMPILE_FDISTR
4217 #define AE_COMPILE_IGAMMAF
4218 #define AE_COMPILE_CHISQUAREDISTR
4219 #endif
4220 
4221 #ifdef AE_COMPILE_WSR
4222 #define AE_PARTIAL_BUILD
4223 #define AE_COMPILE_APSERV
4224 #endif
4225 
4226 #ifdef AE_COMPILE_MANNWHITNEYU
4227 #define AE_PARTIAL_BUILD
4228 #define AE_COMPILE_APSERV
4229 #define AE_COMPILE_ABLASF
4230 #define AE_COMPILE_HQRND
4231 #endif
4232 
4233 #ifdef AE_COMPILE_NEARUNITYUNIT
4234 #define AE_PARTIAL_BUILD
4235 #endif
4236 
4237 #ifdef AE_COMPILE_BINOMIALDISTR
4238 #define AE_PARTIAL_BUILD
4239 #define AE_COMPILE_GAMMAFUNC
4240 #define AE_COMPILE_APSERV
4241 #define AE_COMPILE_ABLASF
4242 #define AE_COMPILE_HQRND
4243 #define AE_COMPILE_NORMALDISTR
4244 #define AE_COMPILE_IBETAF
4245 #define AE_COMPILE_NEARUNITYUNIT
4246 #endif
4247 
4248 #ifdef AE_COMPILE_STEST
4249 #define AE_PARTIAL_BUILD
4250 #define AE_COMPILE_GAMMAFUNC
4251 #define AE_COMPILE_APSERV
4252 #define AE_COMPILE_ABLASF
4253 #define AE_COMPILE_HQRND
4254 #define AE_COMPILE_NORMALDISTR
4255 #define AE_COMPILE_IBETAF
4256 #define AE_COMPILE_NEARUNITYUNIT
4257 #define AE_COMPILE_BINOMIALDISTR
4258 #endif
4259 
4260 #ifdef AE_COMPILE_STUDENTTTESTS
4261 #define AE_PARTIAL_BUILD
4262 #define AE_COMPILE_APSERV
4263 #define AE_COMPILE_GAMMAFUNC
4264 #define AE_COMPILE_ABLASF
4265 #define AE_COMPILE_HQRND
4266 #define AE_COMPILE_NORMALDISTR
4267 #define AE_COMPILE_IBETAF
4268 #define AE_COMPILE_STUDENTTDISTR
4269 #endif
4270 
4271 #ifdef AE_COMPILE_RATINT
4272 #define AE_PARTIAL_BUILD
4273 #define AE_COMPILE_APSERV
4274 #define AE_COMPILE_TSORT
4275 #endif
4276 
4277 #ifdef AE_COMPILE_IDW
4278 #define AE_PARTIAL_BUILD
4279 #define AE_COMPILE_SCODES
4280 #define AE_COMPILE_APSERV
4281 #define AE_COMPILE_TSORT
4282 #define AE_COMPILE_NEARESTNEIGHBOR
4283 #define AE_COMPILE_ABLASF
4284 #define AE_COMPILE_HQRND
4285 #define AE_COMPILE_ABLASMKL
4286 #define AE_COMPILE_ABLAS
4287 #endif
4288 
4289 #ifdef AE_COMPILE_INTFITSERV
4290 #define AE_PARTIAL_BUILD
4291 #define AE_COMPILE_APSERV
4292 #define AE_COMPILE_ABLASF
4293 #define AE_COMPILE_ABLASMKL
4294 #define AE_COMPILE_ABLAS
4295 #define AE_COMPILE_SCODES
4296 #define AE_COMPILE_HQRND
4297 #define AE_COMPILE_TSORT
4298 #define AE_COMPILE_SPARSE
4299 #define AE_COMPILE_DLU
4300 #define AE_COMPILE_SPTRF
4301 #define AE_COMPILE_AMDORDERING
4302 #define AE_COMPILE_SPCHOL
4303 #define AE_COMPILE_CREFLECTIONS
4304 #define AE_COMPILE_MATGEN
4305 #define AE_COMPILE_ROTATIONS
4306 #define AE_COMPILE_TRFAC
4307 #endif
4308 
4309 #ifdef AE_COMPILE_POLINT
4310 #define AE_PARTIAL_BUILD
4311 #define AE_COMPILE_APSERV
4312 #define AE_COMPILE_TSORT
4313 #define AE_COMPILE_RATINT
4314 #endif
4315 
4316 #ifdef AE_COMPILE_SPLINE1D
4317 #define AE_PARTIAL_BUILD
4318 #define AE_COMPILE_APSERV
4319 #define AE_COMPILE_TSORT
4320 #define AE_COMPILE_ABLASF
4321 #define AE_COMPILE_ABLASMKL
4322 #define AE_COMPILE_ABLAS
4323 #define AE_COMPILE_SCODES
4324 #define AE_COMPILE_HQRND
4325 #define AE_COMPILE_SPARSE
4326 #define AE_COMPILE_DLU
4327 #define AE_COMPILE_SPTRF
4328 #define AE_COMPILE_AMDORDERING
4329 #define AE_COMPILE_SPCHOL
4330 #define AE_COMPILE_CREFLECTIONS
4331 #define AE_COMPILE_MATGEN
4332 #define AE_COMPILE_ROTATIONS
4333 #define AE_COMPILE_TRFAC
4334 #define AE_COMPILE_INTFITSERV
4335 #define AE_COMPILE_HBLAS
4336 #define AE_COMPILE_SBLAS
4337 #define AE_COMPILE_ORTFAC
4338 #define AE_COMPILE_FBLS
4339 #define AE_COMPILE_NORMESTIMATOR
4340 #define AE_COMPILE_BLAS
4341 #define AE_COMPILE_BDSVD
4342 #define AE_COMPILE_SVD
4343 #define AE_COMPILE_LINLSQR
4344 #endif
4345 
4346 #ifdef AE_COMPILE_LSFIT
4347 #define AE_PARTIAL_BUILD
4348 #define AE_COMPILE_APSERV
4349 #define AE_COMPILE_ABLASF
4350 #define AE_COMPILE_ABLASMKL
4351 #define AE_COMPILE_ABLAS
4352 #define AE_COMPILE_SCODES
4353 #define AE_COMPILE_HQRND
4354 #define AE_COMPILE_TSORT
4355 #define AE_COMPILE_SPARSE
4356 #define AE_COMPILE_DLU
4357 #define AE_COMPILE_SPTRF
4358 #define AE_COMPILE_AMDORDERING
4359 #define AE_COMPILE_SPCHOL
4360 #define AE_COMPILE_CREFLECTIONS
4361 #define AE_COMPILE_MATGEN
4362 #define AE_COMPILE_ROTATIONS
4363 #define AE_COMPILE_TRFAC
4364 #define AE_COMPILE_INTFITSERV
4365 #define AE_COMPILE_RATINT
4366 #define AE_COMPILE_POLINT
4367 #define AE_COMPILE_HBLAS
4368 #define AE_COMPILE_SBLAS
4369 #define AE_COMPILE_ORTFAC
4370 #define AE_COMPILE_FBLS
4371 #define AE_COMPILE_NORMESTIMATOR
4372 #define AE_COMPILE_BLAS
4373 #define AE_COMPILE_BDSVD
4374 #define AE_COMPILE_SVD
4375 #define AE_COMPILE_LINLSQR
4376 #define AE_COMPILE_SPLINE1D
4377 #define AE_COMPILE_OPTGUARDAPI
4378 #define AE_COMPILE_TRLINSOLVE
4379 #define AE_COMPILE_SAFESOLVE
4380 #define AE_COMPILE_RCOND
4381 #define AE_COMPILE_MATINV
4382 #define AE_COMPILE_OPTSERV
4383 #define AE_COMPILE_XBLAS
4384 #define AE_COMPILE_DIRECTDENSESOLVERS
4385 #define AE_COMPILE_LINMIN
4386 #define AE_COMPILE_MINLBFGS
4387 #define AE_COMPILE_CQMODELS
4388 #define AE_COMPILE_LPQPSERV
4389 #define AE_COMPILE_SNNLS
4390 #define AE_COMPILE_SACTIVESETS
4391 #define AE_COMPILE_QQPSOLVER
4392 #define AE_COMPILE_QPDENSEAULSOLVER
4393 #define AE_COMPILE_MINBLEIC
4394 #define AE_COMPILE_QPBLEICSOLVER
4395 #define AE_COMPILE_VIPMSOLVER
4396 #define AE_COMPILE_MINQP
4397 #define AE_COMPILE_MINLM
4398 #endif
4399 
4400 #ifdef AE_COMPILE_FITSPHERE
4401 #define AE_PARTIAL_BUILD
4402 #define AE_COMPILE_LINMIN
4403 #define AE_COMPILE_APSERV
4404 #define AE_COMPILE_TSORT
4405 #define AE_COMPILE_OPTGUARDAPI
4406 #define AE_COMPILE_ABLASF
4407 #define AE_COMPILE_ABLASMKL
4408 #define AE_COMPILE_ABLAS
4409 #define AE_COMPILE_CREFLECTIONS
4410 #define AE_COMPILE_HQRND
4411 #define AE_COMPILE_MATGEN
4412 #define AE_COMPILE_SCODES
4413 #define AE_COMPILE_SPARSE
4414 #define AE_COMPILE_DLU
4415 #define AE_COMPILE_SPTRF
4416 #define AE_COMPILE_AMDORDERING
4417 #define AE_COMPILE_SPCHOL
4418 #define AE_COMPILE_ROTATIONS
4419 #define AE_COMPILE_TRFAC
4420 #define AE_COMPILE_TRLINSOLVE
4421 #define AE_COMPILE_SAFESOLVE
4422 #define AE_COMPILE_RCOND
4423 #define AE_COMPILE_MATINV
4424 #define AE_COMPILE_HBLAS
4425 #define AE_COMPILE_SBLAS
4426 #define AE_COMPILE_ORTFAC
4427 #define AE_COMPILE_BLAS
4428 #define AE_COMPILE_BDSVD
4429 #define AE_COMPILE_SVD
4430 #define AE_COMPILE_OPTSERV
4431 #define AE_COMPILE_FBLS
4432 #define AE_COMPILE_CQMODELS
4433 #define AE_COMPILE_SNNLS
4434 #define AE_COMPILE_SACTIVESETS
4435 #define AE_COMPILE_MINBLEIC
4436 #define AE_COMPILE_XBLAS
4437 #define AE_COMPILE_DIRECTDENSESOLVERS
4438 #define AE_COMPILE_NORMESTIMATOR
4439 #define AE_COMPILE_LINLSQR
4440 #define AE_COMPILE_MINLBFGS
4441 #define AE_COMPILE_LPQPSERV
4442 #define AE_COMPILE_QQPSOLVER
4443 #define AE_COMPILE_QPDENSEAULSOLVER
4444 #define AE_COMPILE_QPBLEICSOLVER
4445 #define AE_COMPILE_VIPMSOLVER
4446 #define AE_COMPILE_MINQP
4447 #define AE_COMPILE_MINLM
4448 #define AE_COMPILE_LPQPPRESOLVE
4449 #define AE_COMPILE_REVISEDDUALSIMPLEX
4450 #define AE_COMPILE_NLCSLP
4451 #define AE_COMPILE_NLCSQP
4452 #define AE_COMPILE_MINNLC
4453 #endif
4454 
4455 #ifdef AE_COMPILE_PARAMETRIC
4456 #define AE_PARTIAL_BUILD
4457 #define AE_COMPILE_APSERV
4458 #define AE_COMPILE_ABLASF
4459 #define AE_COMPILE_HQRND
4460 #define AE_COMPILE_TSORT
4461 #define AE_COMPILE_ABLASMKL
4462 #define AE_COMPILE_ABLAS
4463 #define AE_COMPILE_SCODES
4464 #define AE_COMPILE_SPARSE
4465 #define AE_COMPILE_DLU
4466 #define AE_COMPILE_SPTRF
4467 #define AE_COMPILE_AMDORDERING
4468 #define AE_COMPILE_SPCHOL
4469 #define AE_COMPILE_CREFLECTIONS
4470 #define AE_COMPILE_MATGEN
4471 #define AE_COMPILE_ROTATIONS
4472 #define AE_COMPILE_TRFAC
4473 #define AE_COMPILE_INTFITSERV
4474 #define AE_COMPILE_HBLAS
4475 #define AE_COMPILE_SBLAS
4476 #define AE_COMPILE_ORTFAC
4477 #define AE_COMPILE_FBLS
4478 #define AE_COMPILE_NORMESTIMATOR
4479 #define AE_COMPILE_BLAS
4480 #define AE_COMPILE_BDSVD
4481 #define AE_COMPILE_SVD
4482 #define AE_COMPILE_LINLSQR
4483 #define AE_COMPILE_SPLINE1D
4484 #define AE_COMPILE_HSSCHUR
4485 #define AE_COMPILE_BASICSTATOPS
4486 #define AE_COMPILE_EVD
4487 #define AE_COMPILE_GAMMAFUNC
4488 #define AE_COMPILE_GQ
4489 #define AE_COMPILE_GKQ
4490 #define AE_COMPILE_AUTOGK
4491 #endif
4492 
4493 #ifdef AE_COMPILE_RBFV1
4494 #define AE_PARTIAL_BUILD
4495 #define AE_COMPILE_SCODES
4496 #define AE_COMPILE_APSERV
4497 #define AE_COMPILE_TSORT
4498 #define AE_COMPILE_NEARESTNEIGHBOR
4499 #define AE_COMPILE_ABLASF
4500 #define AE_COMPILE_ABLASMKL
4501 #define AE_COMPILE_ABLAS
4502 #define AE_COMPILE_HQRND
4503 #define AE_COMPILE_SPARSE
4504 #define AE_COMPILE_DLU
4505 #define AE_COMPILE_SPTRF
4506 #define AE_COMPILE_AMDORDERING
4507 #define AE_COMPILE_SPCHOL
4508 #define AE_COMPILE_CREFLECTIONS
4509 #define AE_COMPILE_MATGEN
4510 #define AE_COMPILE_ROTATIONS
4511 #define AE_COMPILE_TRFAC
4512 #define AE_COMPILE_INTFITSERV
4513 #define AE_COMPILE_RATINT
4514 #define AE_COMPILE_POLINT
4515 #define AE_COMPILE_HBLAS
4516 #define AE_COMPILE_SBLAS
4517 #define AE_COMPILE_ORTFAC
4518 #define AE_COMPILE_FBLS
4519 #define AE_COMPILE_NORMESTIMATOR
4520 #define AE_COMPILE_BLAS
4521 #define AE_COMPILE_BDSVD
4522 #define AE_COMPILE_SVD
4523 #define AE_COMPILE_LINLSQR
4524 #define AE_COMPILE_SPLINE1D
4525 #define AE_COMPILE_OPTGUARDAPI
4526 #define AE_COMPILE_TRLINSOLVE
4527 #define AE_COMPILE_SAFESOLVE
4528 #define AE_COMPILE_RCOND
4529 #define AE_COMPILE_MATINV
4530 #define AE_COMPILE_OPTSERV
4531 #define AE_COMPILE_XBLAS
4532 #define AE_COMPILE_DIRECTDENSESOLVERS
4533 #define AE_COMPILE_LINMIN
4534 #define AE_COMPILE_MINLBFGS
4535 #define AE_COMPILE_CQMODELS
4536 #define AE_COMPILE_LPQPSERV
4537 #define AE_COMPILE_SNNLS
4538 #define AE_COMPILE_SACTIVESETS
4539 #define AE_COMPILE_QQPSOLVER
4540 #define AE_COMPILE_QPDENSEAULSOLVER
4541 #define AE_COMPILE_MINBLEIC
4542 #define AE_COMPILE_QPBLEICSOLVER
4543 #define AE_COMPILE_VIPMSOLVER
4544 #define AE_COMPILE_MINQP
4545 #define AE_COMPILE_MINLM
4546 #define AE_COMPILE_LSFIT
4547 #endif
4548 
4549 #ifdef AE_COMPILE_SPLINE2D
4550 #define AE_PARTIAL_BUILD
4551 #define AE_COMPILE_APSERV
4552 #define AE_COMPILE_SCODES
4553 #define AE_COMPILE_ABLASF
4554 #define AE_COMPILE_ABLASMKL
4555 #define AE_COMPILE_ABLAS
4556 #define AE_COMPILE_HQRND
4557 #define AE_COMPILE_TSORT
4558 #define AE_COMPILE_SPARSE
4559 #define AE_COMPILE_DLU
4560 #define AE_COMPILE_SPTRF
4561 #define AE_COMPILE_AMDORDERING
4562 #define AE_COMPILE_SPCHOL
4563 #define AE_COMPILE_CREFLECTIONS
4564 #define AE_COMPILE_MATGEN
4565 #define AE_COMPILE_ROTATIONS
4566 #define AE_COMPILE_TRFAC
4567 #define AE_COMPILE_INTFITSERV
4568 #define AE_COMPILE_NORMESTIMATOR
4569 #define AE_COMPILE_HBLAS
4570 #define AE_COMPILE_SBLAS
4571 #define AE_COMPILE_ORTFAC
4572 #define AE_COMPILE_BLAS
4573 #define AE_COMPILE_BDSVD
4574 #define AE_COMPILE_SVD
4575 #define AE_COMPILE_LINLSQR
4576 #define AE_COMPILE_FBLS
4577 #define AE_COMPILE_SPLINE1D
4578 #endif
4579 
4580 #ifdef AE_COMPILE_RBFV2
4581 #define AE_PARTIAL_BUILD
4582 #define AE_COMPILE_SCODES
4583 #define AE_COMPILE_APSERV
4584 #define AE_COMPILE_TSORT
4585 #define AE_COMPILE_NEARESTNEIGHBOR
4586 #define AE_COMPILE_ABLASF
4587 #define AE_COMPILE_ABLASMKL
4588 #define AE_COMPILE_ABLAS
4589 #define AE_COMPILE_HQRND
4590 #define AE_COMPILE_SPARSE
4591 #define AE_COMPILE_DLU
4592 #define AE_COMPILE_SPTRF
4593 #define AE_COMPILE_AMDORDERING
4594 #define AE_COMPILE_SPCHOL
4595 #define AE_COMPILE_CREFLECTIONS
4596 #define AE_COMPILE_MATGEN
4597 #define AE_COMPILE_ROTATIONS
4598 #define AE_COMPILE_TRFAC
4599 #define AE_COMPILE_INTFITSERV
4600 #define AE_COMPILE_RATINT
4601 #define AE_COMPILE_POLINT
4602 #define AE_COMPILE_HBLAS
4603 #define AE_COMPILE_SBLAS
4604 #define AE_COMPILE_ORTFAC
4605 #define AE_COMPILE_FBLS
4606 #define AE_COMPILE_NORMESTIMATOR
4607 #define AE_COMPILE_BLAS
4608 #define AE_COMPILE_BDSVD
4609 #define AE_COMPILE_SVD
4610 #define AE_COMPILE_LINLSQR
4611 #define AE_COMPILE_SPLINE1D
4612 #define AE_COMPILE_OPTGUARDAPI
4613 #define AE_COMPILE_TRLINSOLVE
4614 #define AE_COMPILE_SAFESOLVE
4615 #define AE_COMPILE_RCOND
4616 #define AE_COMPILE_MATINV
4617 #define AE_COMPILE_OPTSERV
4618 #define AE_COMPILE_XBLAS
4619 #define AE_COMPILE_DIRECTDENSESOLVERS
4620 #define AE_COMPILE_LINMIN
4621 #define AE_COMPILE_MINLBFGS
4622 #define AE_COMPILE_CQMODELS
4623 #define AE_COMPILE_LPQPSERV
4624 #define AE_COMPILE_SNNLS
4625 #define AE_COMPILE_SACTIVESETS
4626 #define AE_COMPILE_QQPSOLVER
4627 #define AE_COMPILE_QPDENSEAULSOLVER
4628 #define AE_COMPILE_MINBLEIC
4629 #define AE_COMPILE_QPBLEICSOLVER
4630 #define AE_COMPILE_VIPMSOLVER
4631 #define AE_COMPILE_MINQP
4632 #define AE_COMPILE_MINLM
4633 #define AE_COMPILE_LSFIT
4634 #endif
4635 
4636 #ifdef AE_COMPILE_SPLINE3D
4637 #define AE_PARTIAL_BUILD
4638 #define AE_COMPILE_APSERV
4639 #define AE_COMPILE_TSORT
4640 #define AE_COMPILE_ABLASF
4641 #define AE_COMPILE_ABLASMKL
4642 #define AE_COMPILE_ABLAS
4643 #define AE_COMPILE_SCODES
4644 #define AE_COMPILE_HQRND
4645 #define AE_COMPILE_SPARSE
4646 #define AE_COMPILE_DLU
4647 #define AE_COMPILE_SPTRF
4648 #define AE_COMPILE_AMDORDERING
4649 #define AE_COMPILE_SPCHOL
4650 #define AE_COMPILE_CREFLECTIONS
4651 #define AE_COMPILE_MATGEN
4652 #define AE_COMPILE_ROTATIONS
4653 #define AE_COMPILE_TRFAC
4654 #define AE_COMPILE_INTFITSERV
4655 #define AE_COMPILE_HBLAS
4656 #define AE_COMPILE_SBLAS
4657 #define AE_COMPILE_ORTFAC
4658 #define AE_COMPILE_FBLS
4659 #define AE_COMPILE_NORMESTIMATOR
4660 #define AE_COMPILE_BLAS
4661 #define AE_COMPILE_BDSVD
4662 #define AE_COMPILE_SVD
4663 #define AE_COMPILE_LINLSQR
4664 #define AE_COMPILE_SPLINE1D
4665 #endif
4666 
4667 #ifdef AE_COMPILE_INTCOMP
4668 #define AE_PARTIAL_BUILD
4669 #define AE_COMPILE_LINMIN
4670 #define AE_COMPILE_APSERV
4671 #define AE_COMPILE_TSORT
4672 #define AE_COMPILE_OPTGUARDAPI
4673 #define AE_COMPILE_ABLASF
4674 #define AE_COMPILE_ABLASMKL
4675 #define AE_COMPILE_ABLAS
4676 #define AE_COMPILE_CREFLECTIONS
4677 #define AE_COMPILE_HQRND
4678 #define AE_COMPILE_MATGEN
4679 #define AE_COMPILE_SCODES
4680 #define AE_COMPILE_SPARSE
4681 #define AE_COMPILE_DLU
4682 #define AE_COMPILE_SPTRF
4683 #define AE_COMPILE_AMDORDERING
4684 #define AE_COMPILE_SPCHOL
4685 #define AE_COMPILE_ROTATIONS
4686 #define AE_COMPILE_TRFAC
4687 #define AE_COMPILE_TRLINSOLVE
4688 #define AE_COMPILE_SAFESOLVE
4689 #define AE_COMPILE_RCOND
4690 #define AE_COMPILE_MATINV
4691 #define AE_COMPILE_HBLAS
4692 #define AE_COMPILE_SBLAS
4693 #define AE_COMPILE_ORTFAC
4694 #define AE_COMPILE_BLAS
4695 #define AE_COMPILE_BDSVD
4696 #define AE_COMPILE_SVD
4697 #define AE_COMPILE_OPTSERV
4698 #define AE_COMPILE_FBLS
4699 #define AE_COMPILE_CQMODELS
4700 #define AE_COMPILE_SNNLS
4701 #define AE_COMPILE_SACTIVESETS
4702 #define AE_COMPILE_MINBLEIC
4703 #define AE_COMPILE_XBLAS
4704 #define AE_COMPILE_DIRECTDENSESOLVERS
4705 #define AE_COMPILE_NORMESTIMATOR
4706 #define AE_COMPILE_LINLSQR
4707 #define AE_COMPILE_MINLBFGS
4708 #define AE_COMPILE_LPQPSERV
4709 #define AE_COMPILE_QQPSOLVER
4710 #define AE_COMPILE_QPDENSEAULSOLVER
4711 #define AE_COMPILE_QPBLEICSOLVER
4712 #define AE_COMPILE_VIPMSOLVER
4713 #define AE_COMPILE_MINQP
4714 #define AE_COMPILE_MINLM
4715 #define AE_COMPILE_LPQPPRESOLVE
4716 #define AE_COMPILE_REVISEDDUALSIMPLEX
4717 #define AE_COMPILE_NLCSLP
4718 #define AE_COMPILE_NLCSQP
4719 #define AE_COMPILE_MINNLC
4720 #define AE_COMPILE_FITSPHERE
4721 #define AE_COMPILE_INTFITSERV
4722 #define AE_COMPILE_SPLINE1D
4723 #endif
4724 
4725 #ifdef AE_COMPILE_RBF
4726 #define AE_PARTIAL_BUILD
4727 #define AE_COMPILE_SCODES
4728 #define AE_COMPILE_APSERV
4729 #define AE_COMPILE_TSORT
4730 #define AE_COMPILE_NEARESTNEIGHBOR
4731 #define AE_COMPILE_ABLASF
4732 #define AE_COMPILE_ABLASMKL
4733 #define AE_COMPILE_ABLAS
4734 #define AE_COMPILE_HQRND
4735 #define AE_COMPILE_SPARSE
4736 #define AE_COMPILE_DLU
4737 #define AE_COMPILE_SPTRF
4738 #define AE_COMPILE_AMDORDERING
4739 #define AE_COMPILE_SPCHOL
4740 #define AE_COMPILE_CREFLECTIONS
4741 #define AE_COMPILE_MATGEN
4742 #define AE_COMPILE_ROTATIONS
4743 #define AE_COMPILE_TRFAC
4744 #define AE_COMPILE_INTFITSERV
4745 #define AE_COMPILE_RATINT
4746 #define AE_COMPILE_POLINT
4747 #define AE_COMPILE_HBLAS
4748 #define AE_COMPILE_SBLAS
4749 #define AE_COMPILE_ORTFAC
4750 #define AE_COMPILE_FBLS
4751 #define AE_COMPILE_NORMESTIMATOR
4752 #define AE_COMPILE_BLAS
4753 #define AE_COMPILE_BDSVD
4754 #define AE_COMPILE_SVD
4755 #define AE_COMPILE_LINLSQR
4756 #define AE_COMPILE_SPLINE1D
4757 #define AE_COMPILE_OPTGUARDAPI
4758 #define AE_COMPILE_TRLINSOLVE
4759 #define AE_COMPILE_SAFESOLVE
4760 #define AE_COMPILE_RCOND
4761 #define AE_COMPILE_MATINV
4762 #define AE_COMPILE_OPTSERV
4763 #define AE_COMPILE_XBLAS
4764 #define AE_COMPILE_DIRECTDENSESOLVERS
4765 #define AE_COMPILE_LINMIN
4766 #define AE_COMPILE_MINLBFGS
4767 #define AE_COMPILE_CQMODELS
4768 #define AE_COMPILE_LPQPSERV
4769 #define AE_COMPILE_SNNLS
4770 #define AE_COMPILE_SACTIVESETS
4771 #define AE_COMPILE_QQPSOLVER
4772 #define AE_COMPILE_QPDENSEAULSOLVER
4773 #define AE_COMPILE_MINBLEIC
4774 #define AE_COMPILE_QPBLEICSOLVER
4775 #define AE_COMPILE_VIPMSOLVER
4776 #define AE_COMPILE_MINQP
4777 #define AE_COMPILE_MINLM
4778 #define AE_COMPILE_LSFIT
4779 #define AE_COMPILE_RBFV1
4780 #define AE_COMPILE_RBFV2
4781 #endif
4782 
4783 #ifdef AE_COMPILE_NTHEORY
4784 #define AE_PARTIAL_BUILD
4785 #endif
4786 
4787 #ifdef AE_COMPILE_FTBASE
4788 #define AE_PARTIAL_BUILD
4789 #define AE_COMPILE_APSERV
4790 #define AE_COMPILE_NTHEORY
4791 #endif
4792 
4793 #ifdef AE_COMPILE_FFT
4794 #define AE_PARTIAL_BUILD
4795 #define AE_COMPILE_APSERV
4796 #define AE_COMPILE_NTHEORY
4797 #define AE_COMPILE_FTBASE
4798 #endif
4799 
4800 #ifdef AE_COMPILE_FHT
4801 #define AE_PARTIAL_BUILD
4802 #define AE_COMPILE_APSERV
4803 #define AE_COMPILE_NTHEORY
4804 #define AE_COMPILE_FTBASE
4805 #define AE_COMPILE_FFT
4806 #endif
4807 
4808 #ifdef AE_COMPILE_CONV
4809 #define AE_PARTIAL_BUILD
4810 #define AE_COMPILE_APSERV
4811 #define AE_COMPILE_NTHEORY
4812 #define AE_COMPILE_FTBASE
4813 #define AE_COMPILE_FFT
4814 #endif
4815 
4816 #ifdef AE_COMPILE_CORR
4817 #define AE_PARTIAL_BUILD
4818 #define AE_COMPILE_APSERV
4819 #define AE_COMPILE_NTHEORY
4820 #define AE_COMPILE_FTBASE
4821 #define AE_COMPILE_FFT
4822 #define AE_COMPILE_CONV
4823 #endif
4824 
4825 #ifdef AE_COMPILE_EXPINTEGRALS
4826 #define AE_PARTIAL_BUILD
4827 #endif
4828 
4829 #ifdef AE_COMPILE_JACOBIANELLIPTIC
4830 #define AE_PARTIAL_BUILD
4831 #endif
4832 
4833 #ifdef AE_COMPILE_TRIGINTEGRALS
4834 #define AE_PARTIAL_BUILD
4835 #endif
4836 
4837 #ifdef AE_COMPILE_CHEBYSHEV
4838 #define AE_PARTIAL_BUILD
4839 #endif
4840 
4841 #ifdef AE_COMPILE_POISSONDISTR
4842 #define AE_PARTIAL_BUILD
4843 #define AE_COMPILE_GAMMAFUNC
4844 #define AE_COMPILE_APSERV
4845 #define AE_COMPILE_ABLASF
4846 #define AE_COMPILE_HQRND
4847 #define AE_COMPILE_NORMALDISTR
4848 #define AE_COMPILE_IGAMMAF
4849 #endif
4850 
4851 #ifdef AE_COMPILE_BETAF
4852 #define AE_PARTIAL_BUILD
4853 #define AE_COMPILE_GAMMAFUNC
4854 #endif
4855 
4856 #ifdef AE_COMPILE_FRESNEL
4857 #define AE_PARTIAL_BUILD
4858 #endif
4859 
4860 #ifdef AE_COMPILE_PSIF
4861 #define AE_PARTIAL_BUILD
4862 #endif
4863 
4864 #ifdef AE_COMPILE_AIRYF
4865 #define AE_PARTIAL_BUILD
4866 #endif
4867 
4868 #ifdef AE_COMPILE_DAWSON
4869 #define AE_PARTIAL_BUILD
4870 #endif
4871 
4872 #ifdef AE_COMPILE_HERMITE
4873 #define AE_PARTIAL_BUILD
4874 #endif
4875 
4876 #ifdef AE_COMPILE_LEGENDRE
4877 #define AE_PARTIAL_BUILD
4878 #endif
4879 
4880 #ifdef AE_COMPILE_BESSEL
4881 #define AE_PARTIAL_BUILD
4882 #endif
4883 
4884 #ifdef AE_COMPILE_LAGUERRE
4885 #define AE_PARTIAL_BUILD
4886 #endif
4887 
4888 #ifdef AE_COMPILE_ELLIPTIC
4889 #define AE_PARTIAL_BUILD
4890 #endif
4891 
4892 #ifdef AE_COMPILE_PCA
4893 #define AE_PARTIAL_BUILD
4894 #define AE_COMPILE_APSERV
4895 #define AE_COMPILE_ABLASF
4896 #define AE_COMPILE_HQRND
4897 #define AE_COMPILE_HBLAS
4898 #define AE_COMPILE_CREFLECTIONS
4899 #define AE_COMPILE_SBLAS
4900 #define AE_COMPILE_ABLASMKL
4901 #define AE_COMPILE_ABLAS
4902 #define AE_COMPILE_ORTFAC
4903 #define AE_COMPILE_BLAS
4904 #define AE_COMPILE_ROTATIONS
4905 #define AE_COMPILE_BDSVD
4906 #define AE_COMPILE_SVD
4907 #define AE_COMPILE_MATGEN
4908 #define AE_COMPILE_SCODES
4909 #define AE_COMPILE_TSORT
4910 #define AE_COMPILE_SPARSE
4911 #define AE_COMPILE_HSSCHUR
4912 #define AE_COMPILE_BASICSTATOPS
4913 #define AE_COMPILE_EVD
4914 #define AE_COMPILE_BASESTAT
4915 #endif
4916 
4917 #ifdef AE_COMPILE_BDSS
4918 #define AE_PARTIAL_BUILD
4919 #define AE_COMPILE_APSERV
4920 #define AE_COMPILE_TSORT
4921 #define AE_COMPILE_BASICSTATOPS
4922 #define AE_COMPILE_ABLASF
4923 #define AE_COMPILE_ABLASMKL
4924 #define AE_COMPILE_ABLAS
4925 #define AE_COMPILE_BASESTAT
4926 #endif
4927 
4928 #ifdef AE_COMPILE_HPCCORES
4929 #define AE_PARTIAL_BUILD
4930 #endif
4931 
4932 #ifdef AE_COMPILE_MLPBASE
4933 #define AE_PARTIAL_BUILD
4934 #define AE_COMPILE_APSERV
4935 #define AE_COMPILE_TSORT
4936 #define AE_COMPILE_BASICSTATOPS
4937 #define AE_COMPILE_ABLASF
4938 #define AE_COMPILE_ABLASMKL
4939 #define AE_COMPILE_ABLAS
4940 #define AE_COMPILE_BASESTAT
4941 #define AE_COMPILE_BDSS
4942 #define AE_COMPILE_HPCCORES
4943 #define AE_COMPILE_SCODES
4944 #define AE_COMPILE_HQRND
4945 #define AE_COMPILE_SPARSE
4946 #endif
4947 
4948 #ifdef AE_COMPILE_MLPE
4949 #define AE_PARTIAL_BUILD
4950 #define AE_COMPILE_APSERV
4951 #define AE_COMPILE_TSORT
4952 #define AE_COMPILE_BASICSTATOPS
4953 #define AE_COMPILE_ABLASF
4954 #define AE_COMPILE_ABLASMKL
4955 #define AE_COMPILE_ABLAS
4956 #define AE_COMPILE_BASESTAT
4957 #define AE_COMPILE_BDSS
4958 #define AE_COMPILE_HPCCORES
4959 #define AE_COMPILE_SCODES
4960 #define AE_COMPILE_HQRND
4961 #define AE_COMPILE_SPARSE
4962 #define AE_COMPILE_MLPBASE
4963 #endif
4964 
4965 #ifdef AE_COMPILE_CLUSTERING
4966 #define AE_PARTIAL_BUILD
4967 #define AE_COMPILE_APSERV
4968 #define AE_COMPILE_TSORT
4969 #define AE_COMPILE_ABLASF
4970 #define AE_COMPILE_ABLASMKL
4971 #define AE_COMPILE_ABLAS
4972 #define AE_COMPILE_HQRND
4973 #define AE_COMPILE_BLAS
4974 #define AE_COMPILE_BASICSTATOPS
4975 #define AE_COMPILE_BASESTAT
4976 #endif
4977 
4978 #ifdef AE_COMPILE_DFOREST
4979 #define AE_PARTIAL_BUILD
4980 #define AE_COMPILE_APSERV
4981 #define AE_COMPILE_SCODES
4982 #define AE_COMPILE_TSORT
4983 #define AE_COMPILE_ABLASF
4984 #define AE_COMPILE_HQRND
4985 #define AE_COMPILE_BASICSTATOPS
4986 #define AE_COMPILE_ABLASMKL
4987 #define AE_COMPILE_ABLAS
4988 #define AE_COMPILE_BASESTAT
4989 #define AE_COMPILE_BDSS
4990 #endif
4991 
4992 #ifdef AE_COMPILE_LINREG
4993 #define AE_PARTIAL_BUILD
4994 #define AE_COMPILE_APSERV
4995 #define AE_COMPILE_TSORT
4996 #define AE_COMPILE_BASICSTATOPS
4997 #define AE_COMPILE_ABLASF
4998 #define AE_COMPILE_ABLASMKL
4999 #define AE_COMPILE_ABLAS
5000 #define AE_COMPILE_BASESTAT
5001 #define AE_COMPILE_GAMMAFUNC
5002 #define AE_COMPILE_HQRND
5003 #define AE_COMPILE_NORMALDISTR
5004 #define AE_COMPILE_IGAMMAF
5005 #define AE_COMPILE_HBLAS
5006 #define AE_COMPILE_CREFLECTIONS
5007 #define AE_COMPILE_SBLAS
5008 #define AE_COMPILE_ORTFAC
5009 #define AE_COMPILE_BLAS
5010 #define AE_COMPILE_ROTATIONS
5011 #define AE_COMPILE_BDSVD
5012 #define AE_COMPILE_SVD
5013 #endif
5014 
5015 #ifdef AE_COMPILE_FILTERS
5016 #define AE_PARTIAL_BUILD
5017 #define AE_COMPILE_APSERV
5018 #define AE_COMPILE_TSORT
5019 #define AE_COMPILE_BASICSTATOPS
5020 #define AE_COMPILE_ABLASF
5021 #define AE_COMPILE_ABLASMKL
5022 #define AE_COMPILE_ABLAS
5023 #define AE_COMPILE_BASESTAT
5024 #define AE_COMPILE_GAMMAFUNC
5025 #define AE_COMPILE_HQRND
5026 #define AE_COMPILE_NORMALDISTR
5027 #define AE_COMPILE_IGAMMAF
5028 #define AE_COMPILE_HBLAS
5029 #define AE_COMPILE_CREFLECTIONS
5030 #define AE_COMPILE_SBLAS
5031 #define AE_COMPILE_ORTFAC
5032 #define AE_COMPILE_BLAS
5033 #define AE_COMPILE_ROTATIONS
5034 #define AE_COMPILE_BDSVD
5035 #define AE_COMPILE_SVD
5036 #define AE_COMPILE_LINREG
5037 #endif
5038 
5039 #ifdef AE_COMPILE_SSA
5040 #define AE_PARTIAL_BUILD
5041 #define AE_COMPILE_APSERV
5042 #define AE_COMPILE_ABLASF
5043 #define AE_COMPILE_HQRND
5044 #define AE_COMPILE_HBLAS
5045 #define AE_COMPILE_CREFLECTIONS
5046 #define AE_COMPILE_SBLAS
5047 #define AE_COMPILE_ABLASMKL
5048 #define AE_COMPILE_ABLAS
5049 #define AE_COMPILE_ORTFAC
5050 #define AE_COMPILE_BLAS
5051 #define AE_COMPILE_ROTATIONS
5052 #define AE_COMPILE_BDSVD
5053 #define AE_COMPILE_SVD
5054 #define AE_COMPILE_MATGEN
5055 #define AE_COMPILE_SCODES
5056 #define AE_COMPILE_TSORT
5057 #define AE_COMPILE_SPARSE
5058 #define AE_COMPILE_HSSCHUR
5059 #define AE_COMPILE_BASICSTATOPS
5060 #define AE_COMPILE_EVD
5061 #endif
5062 
5063 #ifdef AE_COMPILE_LDA
5064 #define AE_PARTIAL_BUILD
5065 #define AE_COMPILE_APSERV
5066 #define AE_COMPILE_ABLASF
5067 #define AE_COMPILE_HQRND
5068 #define AE_COMPILE_HBLAS
5069 #define AE_COMPILE_CREFLECTIONS
5070 #define AE_COMPILE_SBLAS
5071 #define AE_COMPILE_ABLASMKL
5072 #define AE_COMPILE_ABLAS
5073 #define AE_COMPILE_ORTFAC
5074 #define AE_COMPILE_MATGEN
5075 #define AE_COMPILE_SCODES
5076 #define AE_COMPILE_TSORT
5077 #define AE_COMPILE_SPARSE
5078 #define AE_COMPILE_BLAS
5079 #define AE_COMPILE_ROTATIONS
5080 #define AE_COMPILE_HSSCHUR
5081 #define AE_COMPILE_BASICSTATOPS
5082 #define AE_COMPILE_EVD
5083 #define AE_COMPILE_DLU
5084 #define AE_COMPILE_SPTRF
5085 #define AE_COMPILE_AMDORDERING
5086 #define AE_COMPILE_SPCHOL
5087 #define AE_COMPILE_TRFAC
5088 #define AE_COMPILE_TRLINSOLVE
5089 #define AE_COMPILE_SAFESOLVE
5090 #define AE_COMPILE_RCOND
5091 #define AE_COMPILE_MATINV
5092 #endif
5093 
5094 #ifdef AE_COMPILE_MCPD
5095 #define AE_PARTIAL_BUILD
5096 #define AE_COMPILE_APSERV
5097 #define AE_COMPILE_LINMIN
5098 #define AE_COMPILE_TSORT
5099 #define AE_COMPILE_OPTGUARDAPI
5100 #define AE_COMPILE_ABLASF
5101 #define AE_COMPILE_ABLASMKL
5102 #define AE_COMPILE_ABLAS
5103 #define AE_COMPILE_CREFLECTIONS
5104 #define AE_COMPILE_HQRND
5105 #define AE_COMPILE_MATGEN
5106 #define AE_COMPILE_SCODES
5107 #define AE_COMPILE_SPARSE
5108 #define AE_COMPILE_DLU
5109 #define AE_COMPILE_SPTRF
5110 #define AE_COMPILE_AMDORDERING
5111 #define AE_COMPILE_SPCHOL
5112 #define AE_COMPILE_ROTATIONS
5113 #define AE_COMPILE_TRFAC
5114 #define AE_COMPILE_TRLINSOLVE
5115 #define AE_COMPILE_SAFESOLVE
5116 #define AE_COMPILE_RCOND
5117 #define AE_COMPILE_MATINV
5118 #define AE_COMPILE_HBLAS
5119 #define AE_COMPILE_SBLAS
5120 #define AE_COMPILE_ORTFAC
5121 #define AE_COMPILE_BLAS
5122 #define AE_COMPILE_BDSVD
5123 #define AE_COMPILE_SVD
5124 #define AE_COMPILE_OPTSERV
5125 #define AE_COMPILE_FBLS
5126 #define AE_COMPILE_CQMODELS
5127 #define AE_COMPILE_SNNLS
5128 #define AE_COMPILE_SACTIVESETS
5129 #define AE_COMPILE_MINBLEIC
5130 #endif
5131 
5132 #ifdef AE_COMPILE_LOGIT
5133 #define AE_PARTIAL_BUILD
5134 #define AE_COMPILE_APSERV
5135 #define AE_COMPILE_TSORT
5136 #define AE_COMPILE_BASICSTATOPS
5137 #define AE_COMPILE_ABLASF
5138 #define AE_COMPILE_ABLASMKL
5139 #define AE_COMPILE_ABLAS
5140 #define AE_COMPILE_BASESTAT
5141 #define AE_COMPILE_BDSS
5142 #define AE_COMPILE_HPCCORES
5143 #define AE_COMPILE_SCODES
5144 #define AE_COMPILE_HQRND
5145 #define AE_COMPILE_SPARSE
5146 #define AE_COMPILE_MLPBASE
5147 #define AE_COMPILE_HBLAS
5148 #define AE_COMPILE_CREFLECTIONS
5149 #define AE_COMPILE_SBLAS
5150 #define AE_COMPILE_ORTFAC
5151 #define AE_COMPILE_BLAS
5152 #define AE_COMPILE_ROTATIONS
5153 #define AE_COMPILE_BDSVD
5154 #define AE_COMPILE_SVD
5155 #define AE_COMPILE_DLU
5156 #define AE_COMPILE_SPTRF
5157 #define AE_COMPILE_AMDORDERING
5158 #define AE_COMPILE_SPCHOL
5159 #define AE_COMPILE_MATGEN
5160 #define AE_COMPILE_TRFAC
5161 #define AE_COMPILE_TRLINSOLVE
5162 #define AE_COMPILE_SAFESOLVE
5163 #define AE_COMPILE_RCOND
5164 #define AE_COMPILE_XBLAS
5165 #define AE_COMPILE_DIRECTDENSESOLVERS
5166 #endif
5167 
5168 #ifdef AE_COMPILE_KNN
5169 #define AE_PARTIAL_BUILD
5170 #define AE_COMPILE_APSERV
5171 #define AE_COMPILE_SCODES
5172 #define AE_COMPILE_TSORT
5173 #define AE_COMPILE_ABLASF
5174 #define AE_COMPILE_HQRND
5175 #define AE_COMPILE_NEARESTNEIGHBOR
5176 #define AE_COMPILE_BASICSTATOPS
5177 #define AE_COMPILE_ABLASMKL
5178 #define AE_COMPILE_ABLAS
5179 #define AE_COMPILE_BASESTAT
5180 #define AE_COMPILE_BDSS
5181 #endif
5182 
5183 #ifdef AE_COMPILE_MLPTRAIN
5184 #define AE_PARTIAL_BUILD
5185 #define AE_COMPILE_APSERV
5186 #define AE_COMPILE_TSORT
5187 #define AE_COMPILE_BASICSTATOPS
5188 #define AE_COMPILE_ABLASF
5189 #define AE_COMPILE_ABLASMKL
5190 #define AE_COMPILE_ABLAS
5191 #define AE_COMPILE_BASESTAT
5192 #define AE_COMPILE_BDSS
5193 #define AE_COMPILE_HPCCORES
5194 #define AE_COMPILE_SCODES
5195 #define AE_COMPILE_HQRND
5196 #define AE_COMPILE_SPARSE
5197 #define AE_COMPILE_MLPBASE
5198 #define AE_COMPILE_MLPE
5199 #define AE_COMPILE_DLU
5200 #define AE_COMPILE_SPTRF
5201 #define AE_COMPILE_AMDORDERING
5202 #define AE_COMPILE_SPCHOL
5203 #define AE_COMPILE_CREFLECTIONS
5204 #define AE_COMPILE_MATGEN
5205 #define AE_COMPILE_ROTATIONS
5206 #define AE_COMPILE_TRFAC
5207 #define AE_COMPILE_TRLINSOLVE
5208 #define AE_COMPILE_SAFESOLVE
5209 #define AE_COMPILE_RCOND
5210 #define AE_COMPILE_MATINV
5211 #define AE_COMPILE_LINMIN
5212 #define AE_COMPILE_OPTGUARDAPI
5213 #define AE_COMPILE_HBLAS
5214 #define AE_COMPILE_SBLAS
5215 #define AE_COMPILE_ORTFAC
5216 #define AE_COMPILE_BLAS
5217 #define AE_COMPILE_BDSVD
5218 #define AE_COMPILE_SVD
5219 #define AE_COMPILE_OPTSERV
5220 #define AE_COMPILE_FBLS
5221 #define AE_COMPILE_MINLBFGS
5222 #define AE_COMPILE_XBLAS
5223 #define AE_COMPILE_DIRECTDENSESOLVERS
5224 #endif
5225 
5226 #ifdef AE_COMPILE_DATACOMP
5227 #define AE_PARTIAL_BUILD
5228 #define AE_COMPILE_APSERV
5229 #define AE_COMPILE_TSORT
5230 #define AE_COMPILE_ABLASF
5231 #define AE_COMPILE_ABLASMKL
5232 #define AE_COMPILE_ABLAS
5233 #define AE_COMPILE_HQRND
5234 #define AE_COMPILE_BLAS
5235 #define AE_COMPILE_BASICSTATOPS
5236 #define AE_COMPILE_BASESTAT
5237 #define AE_COMPILE_CLUSTERING
5238 #endif
5239 
5240 #ifdef AE_COMPILE_ALGLIBBASICS
5241 #define AE_PARTIAL_BUILD
5242 #endif
5243 
5244 
5245 
5246 #endif
5247 
5248