1 /*************************************************************************
2 ALGLIB 3.15.0 (source code generated 2019-02-20)
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 <stdlib.h>
115 #include <stdio.h>
116 #include <string.h>
117 #include <setjmp.h>
118 #include <math.h>
119 #include <stddef.h>
120 
121 #if defined(AE_HAVE_STDINT)
122 #include <stdint.h>
123 #endif
124 
125 /*
126  * SSE2 intrinsics
127  *
128  * Preprocessor directives below:
129  * - include headers for SSE2 intrinsics
130  * - define AE_HAS_SSE2_INTRINSICS definition
131  *
132  * These actions are performed when we have:
133  * - x86 architecture definition (AE_CPU==AE_INTEL)
134  * - compiler which supports intrinsics
135  *
136  * Presence of AE_HAS_SSE2_INTRINSICS does NOT mean that our CPU
137  * actually supports SSE2 - such things should be determined at runtime
138  * with ae_cpuid() call. It means that we are working under Intel and
139  * out compiler can issue SSE2-capable code.
140  *
141  */
142 #if defined(AE_CPU)
143 #if AE_CPU==AE_INTEL
144 #if AE_COMPILER==AE_MSVC
145 #include <emmintrin.h>
146 #define AE_HAS_SSE2_INTRINSICS
147 #endif
148 #if AE_COMPILER==AE_GNUC
149 #include <xmmintrin.h>
150 #define AE_HAS_SSE2_INTRINSICS
151 #endif
152 #if AE_COMPILER==AE_SUNC
153 #include <xmmintrin.h>
154 #include <emmintrin.h>
155 #define AE_HAS_SSE2_INTRINSICS
156 #endif
157 #endif
158 #endif
159 
160 
161 
162 /////////////////////////////////////////////////////////////////////////
163 //
164 // THIS SECTION CONTAINS DECLARATIONS FOR BASIC FUNCTIONALITY
165 // LIKE MEMORY MANAGEMENT FOR VECTORS/MATRICES WHICH IS SHARED
166 // BETWEEN C++ AND PURE C LIBRARIES
167 //
168 /////////////////////////////////////////////////////////////////////////
169 namespace alglib_impl
170 {
171 
172 /* if we work under C++ environment, define several conditions */
173 #ifdef AE_USE_CPP
174 #define AE_USE_CPP_BOOL
175 #define AE_USE_CPP_SERIALIZATION
176 #include <iostream>
177 #endif
178 
179 /*
180  * define ae_int32_t, ae_int64_t, ae_int_t, ae_bool, ae_complex, ae_error_type and ae_datatype
181  */
182 
183 #if defined(AE_INT32_T)
184 typedef AE_INT32_T ae_int32_t;
185 #endif
186 #if defined(AE_HAVE_STDINT) && !defined(AE_INT32_T)
187 typedef int32_t ae_int32_t;
188 #endif
189 #if !defined(AE_HAVE_STDINT) && !defined(AE_INT32_T)
190 #if AE_COMPILER==AE_MSVC
191 typedef __int32 ae_int32_t;
192 #endif
193 #if (AE_COMPILER==AE_GNUC) || (AE_COMPILER==AE_SUNC) || (AE_COMPILER==AE_UNKNOWN)
194 typedef int ae_int32_t;
195 #endif
196 #endif
197 
198 #if defined(AE_INT64_T)
199 typedef AE_INT64_T ae_int64_t;
200 #endif
201 #if defined(AE_HAVE_STDINT) && !defined(AE_INT64_T)
202 typedef int64_t ae_int64_t;
203 #endif
204 #if !defined(AE_HAVE_STDINT) && !defined(AE_INT64_T)
205 #if AE_COMPILER==AE_MSVC
206 typedef __int64 ae_int64_t;
207 #endif
208 #if (AE_COMPILER==AE_GNUC) || (AE_COMPILER==AE_SUNC) || (AE_COMPILER==AE_UNKNOWN)
209 typedef signed long long ae_int64_t;
210 #endif
211 #endif
212 
213 #if defined(AE_UINT64_T)
214 typedef AE_UINT64_T ae_uint64_t;
215 #endif
216 #if defined(AE_HAVE_STDINT) && !defined(AE_UINT64_T)
217 typedef uint64_t ae_uint64_t;
218 #endif
219 #if !defined(AE_HAVE_STDINT) && !defined(AE_UINT64_T)
220 #if AE_COMPILER==AE_MSVC
221 typedef unsigned __int64 ae_uint64_t;
222 #endif
223 #if (AE_COMPILER==AE_GNUC) || (AE_COMPILER==AE_SUNC) || (AE_COMPILER==AE_UNKNOWN)
224 typedef unsigned long long ae_uint64_t;
225 #endif
226 #endif
227 
228 #if !defined(AE_INT_T)
229 typedef ptrdiff_t ae_int_t;
230 #endif
231 
232 #if !defined(AE_USE_CPP_BOOL)
233 #define ae_bool char
234 #define ae_true 1
235 #define ae_false 0
236 #else
237 #define ae_bool bool
238 #define ae_true true
239 #define ae_false false
240 #endif
241 
242 typedef struct { double x, y; } ae_complex;
243 
244 typedef enum
245 {
246     ERR_OK = 0,
247     ERR_OUT_OF_MEMORY = 1,
248     ERR_XARRAY_TOO_LARGE = 2,
249     ERR_ASSERTION_FAILED = 3
250 } ae_error_type;
251 
252 typedef ae_int_t ae_datatype;
253 
254 /*
255  * other definitions
256  */
257 enum { OWN_CALLER=1, OWN_AE=2 };
258 enum { ACT_UNCHANGED=1, ACT_SAME_LOCATION=2, ACT_NEW_LOCATION=3 };
259 enum { DT_BOOL=1, DT_INT=2, DT_REAL=3, DT_COMPLEX=4 };
260 enum { CPU_SSE2=1 };
261 
262 /************************************************************************
263 x-string (zero-terminated):
264     owner       OWN_CALLER or OWN_AE. Determines what to do on realloc().
265                 If vector is owned by caller, X-interface  will  just set
266                 ptr to NULL before realloc(). If it is  owned  by  X,  it
267                 will call ae_free/x_free/aligned_free family functions.
268 
269     last_action ACT_UNCHANGED, ACT_SAME_LOCATION, ACT_NEW_LOCATION
270                 contents is either: unchanged, stored at the same location,
271                 stored at the new location.
272                 this field is set on return from X.
273 
274     ptr         pointer to the actual data
275 
276 Members of this structure are ae_int64_t to avoid alignment problems.
277 ************************************************************************/
278 typedef struct
279 {
280     ALIGNED ae_int64_t     owner;
281     ALIGNED ae_int64_t     last_action;
282     ALIGNED char *ptr;
283 } x_string;
284 
285 /************************************************************************
286 x-vector:
287     cnt         number of elements
288 
289     datatype    one of the DT_XXXX values
290 
291     owner       OWN_CALLER or OWN_AE. Determines what to do on realloc().
292                 If vector is owned by caller, X-interface  will  just set
293                 ptr to NULL before realloc(). If it is  owned  by  X,  it
294                 will call ae_free/x_free/aligned_free family functions.
295 
296     last_action ACT_UNCHANGED, ACT_SAME_LOCATION, ACT_NEW_LOCATION
297                 contents is either: unchanged, stored at the same location,
298                 stored at the new location.
299                 this field is set on return from X interface and may be
300                 used by caller as hint when deciding what to do with data
301                 (if it was ACT_UNCHANGED or ACT_SAME_LOCATION, no array
302                 reallocation or copying is required).
303 
304     ptr         pointer to the actual data
305 
306 Members of this structure are ae_int64_t to avoid alignment problems.
307 ************************************************************************/
308 typedef struct
309 {
310     ae_int64_t     cnt;
311     ae_int64_t     datatype;
312     ae_int64_t     owner;
313     ae_int64_t     last_action;
314     union
315     {
316         void *p_ptr;
317         ae_int64_t portable_alignment_enforcer;
318     } x_ptr;
319 } x_vector;
320 
321 
322 /************************************************************************
323 x-matrix:
324     rows        number of rows. may be zero only when cols is zero too.
325 
326     cols        number of columns. may be zero only when rows is zero too.
327 
328     stride      stride, i.e. distance between first elements of rows (in bytes)
329 
330     datatype    one of the DT_XXXX values
331 
332     owner       OWN_CALLER or OWN_AE. Determines what to do on realloc().
333                 If vector is owned by caller, X-interface  will  just set
334                 ptr to NULL before realloc(). If it is  owned  by  X,  it
335                 will call ae_free/x_free/aligned_free family functions.
336 
337     last_action ACT_UNCHANGED, ACT_SAME_LOCATION, ACT_NEW_LOCATION
338                 contents is either: unchanged, stored at the same location,
339                 stored at the new location.
340                 this field is set on return from X interface and may be
341                 used by caller as hint when deciding what to do with data
342                 (if it was ACT_UNCHANGED or ACT_SAME_LOCATION, no array
343                 reallocation or copying is required).
344 
345     ptr         pointer to the actual data, stored rowwise
346 
347 Members of this structure are ae_int64_t to avoid alignment problems.
348 ************************************************************************/
349 typedef struct
350 {
351     ae_int64_t     rows;
352     ae_int64_t     cols;
353     ae_int64_t     stride;
354     ae_int64_t     datatype;
355     ae_int64_t     owner;
356     ae_int64_t     last_action;
357     union
358     {
359         void *p_ptr;
360         ae_int64_t portable_alignment_enforcer;
361     } x_ptr;
362 } x_matrix;
363 
364 
365 /************************************************************************
366 dynamic block which may be automatically deallocated during stack unwinding
367 
368 p_next          next block in the stack unwinding list.
369                 NULL means that this block is not in the list
370 deallocator     deallocator function which should be used to deallocate block.
371                 NULL for "special" blocks (frame/stack boundaries)
372 ptr             pointer which should be passed to the deallocator.
373                 may be null (for zero-size block), DYN_BOTTOM or DYN_FRAME
374                 for "special" blocks (frame/stack boundaries).
375 
376 valgrind_hint   is a special field which stores a special hint pointer for
377                 Valgrind and other similar memory checking tools.  ALGLIB
378                 manually aligns pointers obtained via malloc, so ptr usually
379                 points to location past the beginning  of  the  actuallly
380                 allocated memory. In such cases memory testing tools  may
381                 report "(possibly) lost" memory.
382 
383                 This "hint" field stores  pointer  actually  returned  by
384                 malloc (or NULL, if for some reason  we  do  not  support
385                 this feature). This field is used merely as  a  hint  for
386                 Valgrind - it should NOT be used for anything else.
387 
388 ************************************************************************/
389 typedef struct ae_dyn_block
390 {
391     struct ae_dyn_block * volatile p_next;
392     /* void *deallocator; */
393     void (*deallocator)(void*);
394     void * volatile ptr;
395     void* valgrind_hint;
396 } ae_dyn_block;
397 
398 typedef void(*ae_deallocator)(void*);
399 
400 /************************************************************************
401 frame marker
402 ************************************************************************/
403 typedef struct ae_frame
404 {
405     ae_dyn_block db_marker;
406 } ae_frame;
407 
408 /************************************************************************
409 ALGLIB environment state
410 ************************************************************************/
411 typedef struct ae_state
412 {
413     /*
414      * endianness type: AE_LITTLE_ENDIAN or AE_BIG_ENDIAN
415      */
416     ae_int_t endianness;
417 
418     /*
419      * double value for NAN
420      */
421     double v_nan;
422 
423     /*
424      * double value for +INF
425      */
426     double v_posinf;
427 
428     /*
429      * double value for -INF
430      */
431     double v_neginf;
432 
433     /*
434      * pointer to the top block in a stack of frames
435      * which hold dynamically allocated objects
436      */
437     ae_dyn_block * volatile p_top_block;
438     ae_dyn_block last_block;
439 
440     /*
441      * jmp_buf pointer for internal C-style exception handling
442      */
443     jmp_buf * volatile break_jump;
444 
445     /*
446      * ae_error_type of the last error (filled when exception is thrown)
447      */
448     ae_error_type volatile last_error;
449 
450     /*
451      * human-readable message (filled when exception is thrown)
452      */
453     const char* volatile error_msg;
454 
455     /*
456      * Flags: call-local settings for ALGLIB
457      */
458     ae_uint64_t flags;
459 
460     /*
461      * threading information:
462      * a) current thread pool
463      * b) current worker thread
464      * c) parent task (one we are solving right now)
465      * d) thread exception handler (function which must be called
466      *    by ae_assert before raising exception).
467      *
468      * NOTE: we use void* to store pointers in order to avoid explicit dependency on smp.h
469      */
470     void *worker_thread;
471     void *parent_task;
472     void (*thread_exception_handler)(void*);
473 
474 } ae_state;
475 
476 /************************************************************************
477 Serializer:
478 
479 * ae_stream_writer type is a function pointer for stream  writer  method;
480   this pointer is used by X-core for out-of-core serialization  (say,  to
481   serialize ALGLIB structure directly to managed C# stream).
482 
483   This function accepts two parameters: pointer to  ANSI  (7-bit)  string
484   and pointer-sized integer passed to serializer  during  initialization.
485   String being passed is a part of the data stream; aux paramerer may  be
486   arbitrary value intended to be used by actual implementation of  stream
487   writer. String parameter may include spaces and  linefeed  symbols,  it
488   should be written to stream as is.
489 
490   Return value must be zero for success or non-zero for failure.
491 
492 * ae_stream_reader type is a function pointer for stream  reader  method;
493   this pointer is used by X-core for out-of-core unserialization (say, to
494   unserialize ALGLIB structure directly from managed C# stream).
495 
496   This function accepts three parameters: pointer-sized integer passed to
497   serializer  during  initialization; number  of  symbols  to  read  from
498   stream; pointer to buffer used to store next  token  read  from  stream
499   (ANSI encoding is used, buffer is large enough to store all symbols and
500   trailing zero symbol).
501 
502   Number of symbols to read is always positive.
503 
504   After being called by X-core, this function must:
505   * skip all space and linefeed characters from the current  position  at
506     the stream and until first non-space non-linefeed character is found
507   * read exactly cnt symbols  from  stream  to  buffer;  check  that  all
508     symbols being read are non-space non-linefeed ones
509   * append trailing zero symbol to buffer
510   * return value must be zero on success, non-zero if  even  one  of  the
511     conditions above fails. When reader returns non-zero value,  contents
512     of buf is not used.
513 ************************************************************************/
514 typedef char(*ae_stream_writer)(const char *p_string, ae_int_t aux);
515 typedef char(*ae_stream_reader)(ae_int_t aux, ae_int_t cnt, char *p_buf);
516 
517 typedef struct
518 {
519     ae_int_t mode;
520     ae_int_t entries_needed;
521     ae_int_t entries_saved;
522     ae_int_t bytes_asked;
523     ae_int_t bytes_written;
524 
525 #ifdef AE_USE_CPP_SERIALIZATION
526     std::string     *out_cppstr;
527 #endif
528     char            *out_str; /* pointer to the current position at the output buffer; advanced with each write operation */
529     const char      *in_str;  /* pointer to the current position at the input  buffer; advanced with each read  operation */
530     ae_int_t         stream_aux;
531     ae_stream_writer stream_writer;
532     ae_stream_reader stream_reader;
533 } ae_serializer;
534 
535 
536 typedef struct ae_vector
537 {
538     /*
539      * Number of elements in array, cnt>=0
540      */
541     ae_int_t cnt;
542 
543     /*
544      * Either DT_BOOL, DT_INT, DT_REAL or DT_COMPLEX
545      */
546     ae_datatype datatype;
547 
548     /*
549      * If ptr points to memory owned and managed by ae_vector itself,
550      * this field is ae_false. If vector was attached to x_vector structure
551      * with ae_vector_init_attach_to_x(), this field is ae_true.
552      */
553     ae_bool is_attached;
554 
555     /*
556      * ae_dyn_block structure which manages data in ptr. This structure
557      * is responsible for automatic deletion of object when its frame
558      * is destroyed.
559      */
560     ae_dyn_block data;
561 
562     /*
563      * Pointer to data.
564      * User usually works with this field.
565      */
566     union
567     {
568         void *p_ptr;
569         ae_bool *p_bool;
570         ae_int_t *p_int;
571         double *p_double;
572         ae_complex *p_complex;
573     } ptr;
574 } ae_vector;
575 
576 typedef struct ae_matrix
577 {
578     ae_int_t rows;
579     ae_int_t cols;
580     ae_int_t stride;
581     ae_datatype datatype;
582 
583     /*
584      * If ptr points to memory owned and managed by ae_vector itself,
585      * this field is ae_false. If vector was attached to x_vector structure
586      * with ae_vector_init_attach_to_x(), this field is ae_true.
587      */
588     ae_bool is_attached;
589 
590     ae_dyn_block data;
591     union
592     {
593         void *p_ptr;
594         void **pp_void;
595         ae_bool **pp_bool;
596         ae_int_t **pp_int;
597         double **pp_double;
598         ae_complex **pp_complex;
599     } ptr;
600 } ae_matrix;
601 
602 typedef struct ae_smart_ptr
603 {
604     /* pointer to subscriber; all changes in ptr are translated to subscriber */
605     void **subscriber;
606 
607     /* pointer to object */
608     void *ptr;
609 
610     /* whether smart pointer owns ptr */
611     ae_bool is_owner;
612 
613     /* whether object pointed by ptr is dynamic - clearing such object requires BOTH
614        calling destructor function AND calling ae_free for memory occupied by object. */
615     ae_bool is_dynamic;
616 
617     /* destructor function for pointer; clears all dynamically allocated memory */
618     void (*destroy)(void*);
619 
620     /* frame entry; used to ensure automatic deallocation of smart pointer in case of exception/exit */
621     ae_dyn_block frame_entry;
622 } ae_smart_ptr;
623 
624 
625 /*************************************************************************
626 Lock.
627 
628 This structure provides OS-independent non-reentrant lock:
629 * under Windows/Posix systems it uses system-provided locks
630 * under Boost it uses OS-independent lock provided by Boost package
631 * when no OS is defined, it uses "fake lock" (just stub which is not thread-safe):
632   a) "fake lock" can be in locked or free mode
633   b) "fake lock" can be used only from one thread - one which created lock
634   c) when thread acquires free lock, it immediately returns
635   d) when thread acquires busy lock, program is terminated
636      (because lock is already acquired and no one else can free it)
637 *************************************************************************/
638 typedef struct
639 {
640     /*
641      * Pointer to _lock structure. This pointer has type void* in order to
642      * make header file OS-independent (lock declaration depends on OS).
643      */
644     void *lock_ptr;
645 
646     /*
647      * For eternal=false this field manages pointer to _lock structure.
648      *
649      * ae_dyn_block structure is responsible for automatic deletion of
650      * the memory allocated for the pointer when its frame is destroyed.
651      */
652     ae_dyn_block db;
653 
654     /*
655      * Whether we have eternal lock object (used by thread pool) or
656      * transient lock. Eternal locks are allocated without using ae_dyn_block
657      * structure and do not allow deallocation.
658      */
659     ae_bool eternal;
660 } ae_lock;
661 
662 
663 /*************************************************************************
664 Shared pool: data structure used to provide thread-safe access to pool  of
665 temporary variables.
666 *************************************************************************/
667 typedef struct ae_shared_pool_entry
668 {
669     void * volatile obj;
670     void * volatile next_entry;
671 } ae_shared_pool_entry;
672 
673 typedef struct ae_shared_pool
674 {
675     /* lock object which protects pool */
676     ae_lock pool_lock;
677 
678     /* seed object (used to create new instances of temporaries) */
679     void                    * volatile seed_object;
680 
681     /*
682      * list of recycled OBJECTS:
683      * 1. entries in this list store pointers to recycled objects
684      * 2. every time we retrieve object, we retrieve first entry from this list,
685      *    move it to recycled_entries and return its obj field to caller/
686      */
687     ae_shared_pool_entry    * volatile recycled_objects;
688 
689     /*
690      * list of recycled ENTRIES:
691      * 1. this list holds entries which are not used to store recycled objects;
692      *    every time recycled object is retrieved, its entry is moved to this list.
693      * 2. every time object is recycled, we try to fetch entry for him from this list
694      *    before allocating it with malloc()
695      */
696     ae_shared_pool_entry    * volatile recycled_entries;
697 
698     /* enumeration pointer, points to current recycled object*/
699     ae_shared_pool_entry    * volatile enumeration_counter;
700 
701     /* size of object; this field is used when we call malloc() for new objects */
702     ae_int_t                size_of_object;
703 
704     /* initializer function; accepts pointer to malloc'ed object, initializes its fields */
705     void (*init)(void* dst, ae_state* state, ae_bool make_automatic);
706 
707     /* copy constructor; accepts pointer to malloc'ed, but not initialized object */
708     void (*init_copy)(void* dst, void* src, ae_state* state, ae_bool make_automatic);
709 
710     /* destructor function; */
711     void (*destroy)(void* ptr);
712 
713     /* frame entry; contains pointer to the pool object itself */
714     ae_dyn_block frame_entry;
715 } ae_shared_pool;
716 
717 void ae_never_call_it();
718 void ae_set_dbg_flag(ae_int64_t flag_id, ae_int64_t flag_val);
719 ae_int64_t ae_get_dbg_value(ae_int64_t id);
720 void ae_set_global_threading(ae_uint64_t flg_value);
721 ae_uint64_t ae_get_global_threading();
722 
723 void ae_set_error_flag(ae_bool *p_flag, ae_bool cond, const char *filename, int lineno, const char *xdesc);
724 const char * ae_get_last_error_file();
725 int          ae_get_last_error_line();
726 const char * ae_get_last_error_xdesc();
727 
728 ae_int_t ae_misalignment(const void *ptr, size_t alignment);
729 void* ae_align(void *ptr, size_t alignment);
730 ae_int_t ae_get_effective_workers(ae_int_t nworkers);
731 void  ae_optional_atomic_add_i(ae_int_t *p, ae_int_t v);
732 void  ae_optional_atomic_sub_i(ae_int_t *p, ae_int_t v);
733 
734 void* aligned_malloc(size_t size, size_t alignment);
735 void* aligned_extract_ptr(void *block);
736 void  aligned_free(void *block);
737 void* eternal_malloc(size_t size);
738 #if AE_MALLOC==AE_BASIC_STATIC_MALLOC
739 void set_memory_pool(void *ptr, size_t size);
740 void memory_pool_stats(ae_int_t *bytes_used, ae_int_t *bytes_free);
741 #endif
742 
743 void* ae_malloc(size_t size, ae_state *state);
744 void  ae_free(void *p);
745 ae_int_t ae_sizeof(ae_datatype datatype);
746 ae_bool ae_check_zeros(const void *ptr, ae_int_t n);
747 void ae_touch_ptr(void *p);
748 
749 void ae_state_init(ae_state *state);
750 void ae_state_clear(ae_state *state);
751 void ae_state_set_break_jump(ae_state *state, jmp_buf *buf);
752 void ae_state_set_flags(ae_state *state, ae_uint64_t flags);
753 void ae_break(ae_state *state, ae_error_type error_type, const char *msg);
754 
755 void ae_frame_make(ae_state *state, ae_frame *tmp);
756 void ae_frame_leave(ae_state *state);
757 
758 void ae_db_attach(ae_dyn_block *block, ae_state *state);
759 void ae_db_init(ae_dyn_block *block, ae_int_t size, ae_state *state, ae_bool make_automatic);
760 void ae_db_realloc(ae_dyn_block *block, ae_int_t size, ae_state *state);
761 void ae_db_free(ae_dyn_block *block);
762 void ae_db_swap(ae_dyn_block *block1, ae_dyn_block *block2);
763 
764 void ae_vector_init(ae_vector *dst, ae_int_t size, ae_datatype datatype, ae_state *state, ae_bool make_automatic);
765 void ae_vector_init_copy(ae_vector *dst, ae_vector *src, ae_state *state, ae_bool make_automatic);
766 void ae_vector_init_from_x(ae_vector *dst, x_vector *src, ae_state *state, ae_bool make_automatic);
767 void ae_vector_init_attach_to_x(ae_vector *dst, x_vector *src, ae_state *state, ae_bool make_automatic);
768 void ae_vector_set_length(ae_vector *dst, ae_int_t newsize, ae_state *state);
769 void ae_vector_clear(ae_vector *dst);
770 void ae_vector_destroy(ae_vector *dst);
771 void ae_swap_vectors(ae_vector *vec1, ae_vector *vec2);
772 
773 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);
774 void ae_matrix_init_copy(ae_matrix *dst, ae_matrix *src, ae_state *state, ae_bool make_automatic);
775 void ae_matrix_init_from_x(ae_matrix *dst, x_matrix *src, ae_state *state, ae_bool make_automatic);
776 void ae_matrix_init_attach_to_x(ae_matrix *dst, x_matrix *src, ae_state *state, ae_bool make_automatic);
777 void ae_matrix_set_length(ae_matrix *dst, ae_int_t rows, ae_int_t cols, ae_state *state);
778 void ae_matrix_clear(ae_matrix *dst);
779 void ae_matrix_destroy(ae_matrix *dst);
780 void ae_swap_matrices(ae_matrix *mat1, ae_matrix *mat2);
781 
782 void ae_smart_ptr_init(ae_smart_ptr *dst, void **subscriber, ae_state *state, ae_bool make_automatic);
783 void ae_smart_ptr_clear(void *_dst); /* accepts ae_smart_ptr* */
784 void ae_smart_ptr_destroy(void *_dst);
785 void ae_smart_ptr_assign(ae_smart_ptr *dst, void *new_ptr, ae_bool is_owner, ae_bool is_dynamic, void (*destroy)(void*));
786 void ae_smart_ptr_release(ae_smart_ptr *dst);
787 
788 void ae_yield();
789 void ae_init_lock(ae_lock *lock, ae_state *state, ae_bool make_automatic);
790 void ae_init_lock_eternal(ae_lock *lock);
791 void ae_acquire_lock(ae_lock *lock);
792 void ae_release_lock(ae_lock *lock);
793 void ae_free_lock(ae_lock *lock);
794 
795 void ae_shared_pool_init(void *_dst, ae_state *state, ae_bool make_automatic);
796 void ae_shared_pool_init_copy(void *_dst, void *_src, ae_state *state, ae_bool make_automatic);
797 void ae_shared_pool_clear(void *dst);
798 void ae_shared_pool_destroy(void *dst);
799 ae_bool ae_shared_pool_is_initialized(void *_dst);
800 void ae_shared_pool_set_seed(
801     ae_shared_pool  *dst,
802     void            *seed_object,
803     ae_int_t        size_of_object,
804     void            (*init)(void* dst, ae_state* state, ae_bool make_automatic),
805     void            (*init_copy)(void* dst, void* src, ae_state* state, ae_bool make_automatic),
806     void            (*destroy)(void* ptr),
807     ae_state        *state);
808 void ae_shared_pool_retrieve(
809     ae_shared_pool  *pool,
810     ae_smart_ptr    *pptr,
811     ae_state        *state);
812 void ae_shared_pool_recycle(
813     ae_shared_pool  *pool,
814     ae_smart_ptr    *pptr,
815     ae_state        *state);
816 void ae_shared_pool_clear_recycled(
817     ae_shared_pool  *pool,
818     ae_state        *state);
819 void ae_shared_pool_first_recycled(
820     ae_shared_pool  *pool,
821     ae_smart_ptr    *pptr,
822     ae_state        *state);
823 void ae_shared_pool_next_recycled(
824     ae_shared_pool  *pool,
825     ae_smart_ptr    *pptr,
826     ae_state        *state);
827 void ae_shared_pool_reset(
828     ae_shared_pool  *pool,
829     ae_state        *state);
830 
831 void ae_x_set_vector(x_vector *dst, ae_vector *src, ae_state *state);
832 void ae_x_set_matrix(x_matrix *dst, ae_matrix *src, ae_state *state);
833 void ae_x_attach_to_vector(x_vector *dst, ae_vector *src);
834 void ae_x_attach_to_matrix(x_matrix *dst, ae_matrix *src);
835 
836 void x_vector_clear(x_vector *dst);
837 
838 ae_bool x_is_symmetric(x_matrix *a);
839 ae_bool x_is_hermitian(x_matrix *a);
840 ae_bool x_force_symmetric(x_matrix *a);
841 ae_bool x_force_hermitian(x_matrix *a);
842 ae_bool ae_is_symmetric(ae_matrix *a);
843 ae_bool ae_is_hermitian(ae_matrix *a);
844 ae_bool ae_force_symmetric(ae_matrix *a);
845 ae_bool ae_force_hermitian(ae_matrix *a);
846 
847 void ae_serializer_init(ae_serializer *serializer);
848 void ae_serializer_clear(ae_serializer *serializer);
849 
850 void ae_serializer_alloc_start(ae_serializer *serializer);
851 void ae_serializer_alloc_entry(ae_serializer *serializer);
852 ae_int_t ae_serializer_get_alloc_size(ae_serializer *serializer);
853 
854 #ifdef AE_USE_CPP_SERIALIZATION
855 void ae_serializer_sstart_str(ae_serializer *serializer, std::string *buf);
856 void ae_serializer_ustart_str(ae_serializer *serializer, const std::string *buf);
857 void ae_serializer_sstart_stream(ae_serializer *serializer, std::ostream *stream);
858 void ae_serializer_ustart_stream(ae_serializer *serializer, const std::istream *stream);
859 #endif
860 void ae_serializer_sstart_str(ae_serializer *serializer, char *buf);
861 void ae_serializer_ustart_str(ae_serializer *serializer, const char *buf);
862 void ae_serializer_sstart_stream(ae_serializer *serializer, ae_stream_writer writer, ae_int_t aux);
863 void ae_serializer_ustart_stream(ae_serializer *serializer, ae_stream_reader reader, ae_int_t aux);
864 
865 void ae_serializer_serialize_bool(ae_serializer *serializer, ae_bool v, ae_state *state);
866 void ae_serializer_serialize_int(ae_serializer *serializer, ae_int_t v, ae_state *state);
867 void ae_serializer_serialize_double(ae_serializer *serializer, double v, ae_state *state);
868 void ae_serializer_unserialize_bool(ae_serializer *serializer, ae_bool *v, ae_state *state);
869 void ae_serializer_unserialize_int(ae_serializer *serializer, ae_int_t *v, ae_state *state);
870 void ae_serializer_unserialize_double(ae_serializer *serializer, double *v, ae_state *state);
871 
872 void ae_serializer_stop(ae_serializer *serializer, ae_state *state);
873 
874 /************************************************************************
875 Service functions
876 ************************************************************************/
877 void ae_assert(ae_bool cond, const char *msg, ae_state *state);
878 ae_int_t ae_cpuid();
879 
880 /************************************************************************
881 Real math functions:
882 * IEEE-compliant floating point comparisons
883 * standard functions
884 ************************************************************************/
885 ae_bool ae_fp_eq(double v1, double v2);
886 ae_bool ae_fp_neq(double v1, double v2);
887 ae_bool ae_fp_less(double v1, double v2);
888 ae_bool ae_fp_less_eq(double v1, double v2);
889 ae_bool ae_fp_greater(double v1, double v2);
890 ae_bool ae_fp_greater_eq(double v1, double v2);
891 
892 ae_bool ae_isfinite_stateless(double x, ae_int_t endianness);
893 ae_bool ae_isnan_stateless(double x,    ae_int_t endianness);
894 ae_bool ae_isinf_stateless(double x,    ae_int_t endianness);
895 ae_bool ae_isposinf_stateless(double x, ae_int_t endianness);
896 ae_bool ae_isneginf_stateless(double x, ae_int_t endianness);
897 
898 ae_int_t ae_get_endianness();
899 
900 ae_bool ae_isfinite(double x,ae_state *state);
901 ae_bool ae_isnan(double x,   ae_state *state);
902 ae_bool ae_isinf(double x,   ae_state *state);
903 ae_bool ae_isposinf(double x,ae_state *state);
904 ae_bool ae_isneginf(double x,ae_state *state);
905 
906 double   ae_fabs(double x,   ae_state *state);
907 ae_int_t ae_iabs(ae_int_t x, ae_state *state);
908 double   ae_sqr(double x,    ae_state *state);
909 double   ae_sqrt(double x,   ae_state *state);
910 
911 ae_int_t ae_sign(double x,   ae_state *state);
912 ae_int_t ae_round(double x,  ae_state *state);
913 ae_int_t ae_trunc(double x,  ae_state *state);
914 ae_int_t ae_ifloor(double x, ae_state *state);
915 ae_int_t ae_iceil(double x,  ae_state *state);
916 
917 ae_int_t ae_maxint(ae_int_t m1, ae_int_t m2, ae_state *state);
918 ae_int_t ae_minint(ae_int_t m1, ae_int_t m2, ae_state *state);
919 double   ae_maxreal(double m1, double m2, ae_state *state);
920 double   ae_minreal(double m1, double m2, ae_state *state);
921 double   ae_randomreal(ae_state *state);
922 ae_int_t ae_randominteger(ae_int_t maxv, ae_state *state);
923 
924 double   ae_sin(double x, ae_state *state);
925 double   ae_cos(double x, ae_state *state);
926 double   ae_tan(double x, ae_state *state);
927 double   ae_sinh(double x, ae_state *state);
928 double   ae_cosh(double x, ae_state *state);
929 double   ae_tanh(double x, ae_state *state);
930 double   ae_asin(double x, ae_state *state);
931 double   ae_acos(double x, ae_state *state);
932 double   ae_atan(double x, ae_state *state);
933 double   ae_atan2(double y, double x, ae_state *state);
934 
935 double   ae_log(double x, ae_state *state);
936 double   ae_pow(double x, double y, ae_state *state);
937 double   ae_exp(double x, ae_state *state);
938 
939 /************************************************************************
940 Complex math functions:
941 * basic arithmetic operations
942 * standard functions
943 ************************************************************************/
944 ae_complex ae_complex_from_i(ae_int_t v);
945 ae_complex ae_complex_from_d(double v);
946 
947 ae_complex ae_c_neg(ae_complex lhs);
948 ae_bool ae_c_eq(ae_complex lhs,       ae_complex rhs);
949 ae_bool ae_c_neq(ae_complex lhs,      ae_complex rhs);
950 ae_complex ae_c_add(ae_complex lhs,   ae_complex rhs);
951 ae_complex ae_c_mul(ae_complex lhs,   ae_complex rhs);
952 ae_complex ae_c_sub(ae_complex lhs,   ae_complex rhs);
953 ae_complex ae_c_div(ae_complex lhs,   ae_complex rhs);
954 ae_bool ae_c_eq_d(ae_complex lhs,     double rhs);
955 ae_bool ae_c_neq_d(ae_complex lhs,    double rhs);
956 ae_complex ae_c_add_d(ae_complex lhs, double rhs);
957 ae_complex ae_c_mul_d(ae_complex lhs, double rhs);
958 ae_complex ae_c_sub_d(ae_complex lhs, double rhs);
959 ae_complex ae_c_d_sub(double lhs,     ae_complex rhs);
960 ae_complex ae_c_div_d(ae_complex lhs, double rhs);
961 ae_complex ae_c_d_div(double lhs,   ae_complex rhs);
962 
963 ae_complex ae_c_conj(ae_complex lhs, ae_state *state);
964 ae_complex ae_c_sqr(ae_complex lhs, ae_state *state);
965 double     ae_c_abs(ae_complex z, ae_state *state);
966 
967 /************************************************************************
968 Complex BLAS operations
969 ************************************************************************/
970 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);
971 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);
972 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);
973 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);
974 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);
975 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);
976 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);
977 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);
978 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);
979 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);
980 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);
981 void ae_v_cmuld(ae_complex *vdst, ae_int_t stride_dst, ae_int_t n, double alpha);
982 void ae_v_cmulc(ae_complex *vdst, ae_int_t stride_dst, ae_int_t n, ae_complex alpha);
983 
984 /************************************************************************
985 Real BLAS operations
986 ************************************************************************/
987 double ae_v_dotproduct(const double *v0, ae_int_t stride0, const double *v1, ae_int_t stride1, ae_int_t n);
988 void ae_v_move(double *vdst,    ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
989 void ae_v_moveneg(double *vdst, ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
990 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);
991 void ae_v_add(double *vdst,     ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
992 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);
993 void ae_v_sub(double *vdst,     ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
994 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);
995 void ae_v_muld(double *vdst,  ae_int_t stride_dst, ae_int_t n, double alpha);
996 
997 /************************************************************************
998 Other functions
999 ************************************************************************/
1000 ae_int_t ae_v_len(ae_int_t a, ae_int_t b);
1001 
1002 /*
1003 extern const double ae_machineepsilon;
1004 extern const double ae_maxrealnumber;
1005 extern const double ae_minrealnumber;
1006 extern const double ae_pi;
1007 */
1008 #define ae_machineepsilon 5E-16
1009 #define ae_maxrealnumber  1E300
1010 #define ae_minrealnumber  1E-300
1011 #define ae_pi 3.1415926535897932384626433832795
1012 
1013 
1014 /************************************************************************
1015 RComm functions
1016 ************************************************************************/
1017 typedef struct rcommstate
1018 {
1019     int stage;
1020     ae_vector ia;
1021     ae_vector ba;
1022     ae_vector ra;
1023     ae_vector ca;
1024 } rcommstate;
1025 void _rcommstate_init(rcommstate* p, ae_state *_state, ae_bool make_automatic);
1026 void _rcommstate_init_copy(rcommstate* dst, rcommstate* src, ae_state *_state, ae_bool make_automatic);
1027 void _rcommstate_clear(rcommstate* p);
1028 void _rcommstate_destroy(rcommstate* p);
1029 
1030 
1031 /************************************************************************
1032 Allocation counters, inactive by default.
1033 Turned on when needed for debugging purposes.
1034 
1035 _alloc_counter is incremented by 1 on malloc(), decremented on free().
1036 _alloc_counter_total is only incremented by 1.
1037 ************************************************************************/
1038 extern ae_int_t   _alloc_counter;
1039 extern ae_int_t   _alloc_counter_total;
1040 extern ae_bool    _use_alloc_counter;
1041 
1042 
1043 /************************************************************************
1044 Malloc debugging:
1045 
1046 * _force_malloc_failure - set this flag to ae_true in  order  to  enforce
1047   failure of ALGLIB malloc(). Useful to debug handling of  errors  during
1048   memory allocation. As long as this flag is set, ALGLIB malloc will fail.
1049 * _malloc_failure_after - set it to non-zero value in  order  to  enforce
1050   malloc failure as soon as _alloc_counter_total increases above value of
1051   this variable. This value has no effect if  _use_alloc_counter  is  not
1052   set.
1053 ************************************************************************/
1054 extern ae_bool    _force_malloc_failure;
1055 extern ae_int_t   _malloc_failure_after;
1056 
1057 
1058 /************************************************************************
1059 debug functions (must be turned on by preprocessor definitions):
1060 * tickcount(), which is wrapper around GetTickCount()
1061 * flushconsole(), fluches console
1062 * ae_debugrng(), returns random number generated with high-quality random numbers generator
1063 * ae_set_seed(), sets seed of the debug RNG (NON-THREAD-SAFE!!!)
1064 * ae_get_seed(), returns two seed values of the debug RNG (NON-THREAD-SAFE!!!)
1065 ************************************************************************/
1066 #ifdef AE_DEBUG4WINDOWS
1067 #define flushconsole(s) fflush(stdout)
1068 #define tickcount(s) _tickcount()
1069 int _tickcount();
1070 #endif
1071 #ifdef AE_DEBUG4POSIX
1072 #define flushconsole(s) fflush(stdout)
1073 #define tickcount(s) _tickcount()
1074 int _tickcount();
1075 #endif
1076 
1077 
1078 }
1079 
1080 
1081 /////////////////////////////////////////////////////////////////////////
1082 //
1083 // THIS SECTION CONTAINS DECLARATIONS FOR C++ RELATED FUNCTIONALITY
1084 //
1085 /////////////////////////////////////////////////////////////////////////
1086 
1087 namespace alglib
1088 {
1089 
1090 typedef alglib_impl::ae_int_t ae_int_t;
1091 
1092 /********************************************************************
1093 Class forwards
1094 ********************************************************************/
1095 class complex;
1096 
1097 ae_int_t vlen(ae_int_t n1, ae_int_t n2);
1098 
1099 /********************************************************************
1100 Exception class.
1101 ********************************************************************/
1102 #if !defined(AE_NO_EXCEPTIONS)
1103 class ap_error
1104 {
1105 public:
1106     std::string msg;
1107 
1108     ap_error();
1109     ap_error(const char *s);
1110     static void make_assertion(bool bClause);
1111     static void make_assertion(bool bClause, const char *p_msg);
1112 private:
1113 };
1114 #endif
1115 
1116 /********************************************************************
1117 Complex number with double precision.
1118 ********************************************************************/
1119 class complex
1120 {
1121 public:
1122     complex();
1123     complex(const double &_x);
1124     complex(const double &_x, const double &_y);
1125     complex(const complex &z);
1126 
1127     complex& operator= (const double& v);
1128     complex& operator+=(const double& v);
1129     complex& operator-=(const double& v);
1130     complex& operator*=(const double& v);
1131     complex& operator/=(const double& v);
1132 
1133     complex& operator= (const complex& z);
1134     complex& operator+=(const complex& z);
1135     complex& operator-=(const complex& z);
1136     complex& operator*=(const complex& z);
1137     complex& operator/=(const complex& z);
1138 
1139     alglib_impl::ae_complex*       c_ptr();
1140     const alglib_impl::ae_complex* c_ptr() const;
1141 
1142 #if !defined(AE_NO_EXCEPTIONS)
1143     std::string tostring(int dps) const;
1144 #endif
1145 
1146     double x, y;
1147 };
1148 
1149 const alglib::complex operator/(const alglib::complex& lhs, const alglib::complex& rhs);
1150 bool operator==(const alglib::complex& lhs, const alglib::complex& rhs);
1151 bool operator!=(const alglib::complex& lhs, const alglib::complex& rhs);
1152 const alglib::complex operator+(const alglib::complex& lhs);
1153 const alglib::complex operator-(const alglib::complex& lhs);
1154 const alglib::complex operator+(const alglib::complex& lhs, const alglib::complex& rhs);
1155 const alglib::complex operator+(const alglib::complex& lhs, const double& rhs);
1156 const alglib::complex operator+(const double& lhs, const alglib::complex& rhs);
1157 const alglib::complex operator-(const alglib::complex& lhs, const alglib::complex& rhs);
1158 const alglib::complex operator-(const alglib::complex& lhs, const double& rhs);
1159 const alglib::complex operator-(const double& lhs, const alglib::complex& rhs);
1160 const alglib::complex operator*(const alglib::complex& lhs, const alglib::complex& rhs);
1161 const alglib::complex operator*(const alglib::complex& lhs, const double& rhs);
1162 const alglib::complex operator*(const double& lhs, const alglib::complex& rhs);
1163 const alglib::complex operator/(const alglib::complex& lhs, const alglib::complex& rhs);
1164 const alglib::complex operator/(const double& lhs, const alglib::complex& rhs);
1165 const alglib::complex operator/(const alglib::complex& lhs, const double& rhs);
1166 double abscomplex(const alglib::complex &z);
1167 alglib::complex conj(const alglib::complex &z);
1168 alglib::complex csqr(const alglib::complex &z);
1169 
1170 /********************************************************************
1171 Level 1 BLAS functions
1172 
1173 NOTES:
1174 * destination and source should NOT overlap
1175 * stride is assumed to be positive, but it is not
1176   assert'ed within function
1177 * conj_src parameter specifies whether complex source is conjugated
1178   before processing or not. Pass string which starts with 'N' or 'n'
1179   ("No conj", for example) to use unmodified parameter. All other
1180   values will result in conjugation of input, but it is recommended
1181   to use "Conj" in such cases.
1182 ********************************************************************/
1183 double vdotproduct(const double *v0, ae_int_t stride0, const double *v1, ae_int_t stride1, ae_int_t n);
1184 double vdotproduct(const double *v1, const double *v2, ae_int_t N);
1185 
1186 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);
1187 alglib::complex vdotproduct(const alglib::complex *v1, const alglib::complex *v2, ae_int_t N);
1188 
1189 void vmove(double *vdst,  ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
1190 void vmove(double *vdst, const double* vsrc, ae_int_t N);
1191 
1192 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);
1193 void vmove(alglib::complex *vdst, const alglib::complex* vsrc, ae_int_t N);
1194 
1195 void vmoveneg(double *vdst,  ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n);
1196 void vmoveneg(double *vdst, const double *vsrc, ae_int_t N);
1197 
1198 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);
1199 void vmoveneg(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N);
1200 
1201 void vmove(double *vdst,  ae_int_t stride_dst, const double* vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1202 void vmove(double *vdst, const double *vsrc, ae_int_t N, double alpha);
1203 
1204 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);
1205 void vmove(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, double alpha);
1206 
1207 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);
1208 void vmove(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, alglib::complex alpha);
1209 
1210 void vadd(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
1211 void vadd(double *vdst, const double *vsrc, ae_int_t N);
1212 
1213 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);
1214 void vadd(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N);
1215 
1216 void vadd(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1217 void vadd(double *vdst, const double *vsrc, ae_int_t N, double alpha);
1218 
1219 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);
1220 void vadd(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, double alpha);
1221 
1222 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);
1223 void vadd(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, alglib::complex alpha);
1224 
1225 void vsub(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n);
1226 void vsub(double *vdst, const double *vsrc, ae_int_t N);
1227 
1228 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);
1229 void vsub(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N);
1230 
1231 void vsub(double *vdst,  ae_int_t stride_dst, const double *vsrc,  ae_int_t stride_src, ae_int_t n, double alpha);
1232 void vsub(double *vdst, const double *vsrc, ae_int_t N, double alpha);
1233 
1234 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);
1235 void vsub(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, double alpha);
1236 
1237 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);
1238 void vsub(alglib::complex *vdst, const alglib::complex *vsrc, ae_int_t N, alglib::complex alpha);
1239 
1240 void vmul(double *vdst,  ae_int_t stride_dst, ae_int_t n, double alpha);
1241 void vmul(double *vdst, ae_int_t N, double alpha);
1242 
1243 void vmul(alglib::complex *vdst, ae_int_t stride_dst, ae_int_t n, double alpha);
1244 void vmul(alglib::complex *vdst, ae_int_t N, double alpha);
1245 
1246 void vmul(alglib::complex *vdst, ae_int_t stride_dst, ae_int_t n, alglib::complex alpha);
1247 void vmul(alglib::complex *vdst, ae_int_t N, alglib::complex alpha);
1248 
1249 
1250 /********************************************************************
1251 xparams type and several predefined constants
1252 ********************************************************************/
1253 struct xparams
1254 {
1255     alglib_impl::ae_uint64_t flags;
1256 };
1257 
1258 extern const xparams &xdefault;
1259 extern const xparams &serial;
1260 extern const xparams &parallel;
1261 
1262 /********************************************************************
1263 Threading functions
1264 ********************************************************************/
1265 // nworkers can be 1, 2, ... ; or 0 for auto; or -1/-2/... for all except for one/two/...
1266 void setnworkers(alglib::ae_int_t nworkers);
1267 
1268 // sets global threading settings to alglib::serial or alglib::parallel
1269 void setglobalthreading(const xparams settings);
1270 
1271 // nworkers can be 1, 2, ... ; or 0 for auto; or -1/-2/... for all except for one/two/...
1272 alglib::ae_int_t getnworkers();
1273 
1274 /********************************************************************
1275 internal functions used by test_x.cpp, interfaces for functions present
1276 in commercial ALGLIB but lacking in free edition.
1277 ********************************************************************/
1278 ae_int_t _ae_cores_count();
1279 void _ae_set_global_threading(alglib_impl::ae_uint64_t flg_value);
1280 alglib_impl::ae_uint64_t _ae_get_global_threading();
1281 
1282 /********************************************************************
1283 1- and 2-dimensional arrays
1284 ********************************************************************/
1285 class ae_vector_wrapper
1286 {
1287 public:
1288     //
1289     // Creates object attached to external ae_vector structure.
1290     //
1291     // NOTE: this function also checks that source ae_vector* has
1292     //       required datatype. An exception is generated otherwise.
1293     //
1294     ae_vector_wrapper(alglib_impl::ae_vector *e_ptr, alglib_impl::ae_datatype datatype);
1295 
1296     //
1297     // Creates zero-size vector of specific datatype
1298     //
1299     ae_vector_wrapper(alglib_impl::ae_datatype datatype);
1300 
1301     //
1302     // Creates a copy of another vector (can be reference to one of the derived classes)
1303     //
1304     // NOTE: this function also checks that source ae_vector* has
1305     //       required datatype. An exception is generated otherwise.
1306     //
1307     ae_vector_wrapper(const ae_vector_wrapper &rhs, alglib_impl::ae_datatype datatype);
1308 
1309     //
1310     // Well, it is destructor...
1311     //
1312     virtual ~ae_vector_wrapper();
1313 
1314     //
1315     // For wrapper object allocated with allocate_own() this function
1316     // changes length, completely dropping previous contents.
1317     //
1318     // It does not work (throws exception) for frozen proxy objects.
1319     //
1320     void setlength(ae_int_t iLen);
1321 
1322     //
1323     // Element count
1324     //
1325     ae_int_t length() const;
1326 
1327     //
1328     // Access to internal C-structure used by C-core.
1329     // Not intended for external use.
1330     //
1331     const alglib_impl::ae_vector* c_ptr() const;
1332     alglib_impl::ae_vector* c_ptr();
1333 private:
1334     ae_vector_wrapper();
1335     ae_vector_wrapper(const ae_vector_wrapper &rhs);
1336     const ae_vector_wrapper& operator=(const ae_vector_wrapper &rhs);
1337 protected:
1338 #if !defined(AE_NO_EXCEPTIONS)
1339     //
1340     // Copies array given by string into current object. Additional
1341     // parameter DATATYPE contains information about type of the data
1342     // in S and type of the array to create.
1343     //
1344     // NOTE: this function is not supported in exception-free mode.
1345     //
1346     ae_vector_wrapper(const char *s, alglib_impl::ae_datatype datatype);
1347 #endif
1348 
1349     //
1350     // This function attaches wrapper object to external x_vector structure;
1351     // "frozen proxy" mode is activated (you can read/write, but can not reallocate
1352     // and do not own memory of the vector).
1353     //
1354     // NOTE: initial state of wrapper object is assumed to be initialized;
1355     //       all previously allocated memory is properly deallocated.
1356     //
1357     // NOTE: x_vector structure pointed by new_ptr is used only once; after
1358     //       we fetch pointer to memory and its size, this structure is ignored
1359     //       and not referenced anymore. So, you can pass pointers to temporary
1360     //       x-structures which are deallocated immediately after you call attach_to()
1361     //
1362     // NOTE: state structure is used for error reporting purposes (longjmp on errors).
1363     //
1364     void attach_to(alglib_impl::x_vector *new_ptr, alglib_impl::ae_state *_state);
1365 
1366     //
1367     // Assigns RHS to current object. Returns *this.
1368     //
1369     // It has several branches depending on target object status:
1370     // * in case it is proxy object, data are copied into memory pointed by
1371     //   proxy. Function checks that source has exactly same size as target
1372     //   (exception is thrown on failure).
1373     // * in case it is non-proxy object, data allocated by object are cleared
1374     //   and a copy of RHS is created in target.
1375     //
1376     // NOTE: this function correctly handles assignments of the object to itself.
1377     //
1378     const ae_vector_wrapper& assign(const ae_vector_wrapper &rhs);
1379 
1380     //
1381     // Pointer to ae_vector structure:
1382     // * ptr==&inner_vec means that wrapper object owns ae_vector structure and
1383     //   is responsible for proper deallocation of its memory
1384     // * ptr!=&inner_vec means that wrapper object works with someone's other
1385     //   ae_vector record and is not responsible for its memory; in this case
1386     //   inner_vec is assumed to be uninitialized.
1387     //
1388     alglib_impl::ae_vector *ptr;
1389 
1390     //
1391     // Inner ae_vector record.
1392     // Ignored for ptr!=&inner_rec.
1393     //
1394     alglib_impl::ae_vector inner_vec;
1395 
1396     //
1397     // Whether this wrapper object is frozen proxy (you may read array, may
1398     // modify its value, but can not deallocate its memory or resize it) or not.
1399     //
1400     // If is_frozen_proxy==true and if:
1401     // * ptr==&inner_vec, it means that wrapper works with its own ae_vector
1402     //   structure, but this structure points to externally allocated memory.
1403     //   This memory is NOT owned by ae_vector object.
1404     // * ptr!=&inner_vec, it means that wrapper works with externally allocated
1405     //   and managed ae_vector structure. Both memory pointed by ae_vector and
1406     //   ae_vector structure itself are not owned by wrapper object.
1407     //
1408     bool                   is_frozen_proxy;
1409 };
1410 
1411 class boolean_1d_array : public ae_vector_wrapper
1412 {
1413 public:
1414     boolean_1d_array();
1415     boolean_1d_array(const boolean_1d_array &rhs);
1416     boolean_1d_array(alglib_impl::ae_vector *p);
1417     const boolean_1d_array& operator=(const boolean_1d_array &rhs);
1418     virtual ~boolean_1d_array() ;
1419 
1420     const ae_bool& operator()(ae_int_t i) const;
1421     ae_bool& operator()(ae_int_t i);
1422 
1423     const ae_bool& operator[](ae_int_t i) const;
1424     ae_bool& operator[](ae_int_t i);
1425 
1426     //
1427     // This function allocates array[iLen] and copies data
1428     // pointed by pContent to its memory. Completely independent
1429     // copy of data is created.
1430     //
1431     void setcontent(ae_int_t iLen, const bool *pContent );
1432 
1433     //
1434     // This function returns pointer to internal memory
1435     //
1436     ae_bool* getcontent();
1437     const ae_bool* getcontent() const;
1438 
1439 #if !defined(AE_NO_EXCEPTIONS)
1440     boolean_1d_array(const char *s);
1441     std::string tostring() const;
1442 #endif
1443 };
1444 
1445 class integer_1d_array : public ae_vector_wrapper
1446 {
1447 public:
1448     integer_1d_array();
1449     integer_1d_array(const integer_1d_array &rhs);
1450     integer_1d_array(alglib_impl::ae_vector *p);
1451     const integer_1d_array& operator=(const integer_1d_array &rhs);
1452     virtual ~integer_1d_array();
1453 
1454     const ae_int_t& operator()(ae_int_t i) const;
1455     ae_int_t& operator()(ae_int_t i);
1456 
1457     const ae_int_t& operator[](ae_int_t i) const;
1458     ae_int_t& operator[](ae_int_t i);
1459 
1460     //
1461     // This function allocates array[iLen] and copies data
1462     // pointed by pContent to its memory. Completely independent
1463     // copy of data is created.
1464     //
1465     void setcontent(ae_int_t iLen, const ae_int_t *pContent );
1466 
1467     //
1468     // This function returns pointer to internal memory
1469     //
1470     ae_int_t* getcontent();
1471     const ae_int_t* getcontent() const;
1472 
1473 #if !defined(AE_NO_EXCEPTIONS)
1474     integer_1d_array(const char *s);
1475     std::string tostring() const;
1476 #endif
1477 };
1478 
1479 class real_1d_array : public ae_vector_wrapper
1480 {
1481 public:
1482     real_1d_array();
1483     real_1d_array(const real_1d_array &rhs);
1484     real_1d_array(alglib_impl::ae_vector *p);
1485     const real_1d_array& operator=(const real_1d_array &rhs);
1486     virtual ~real_1d_array();
1487 
1488     const double& operator()(ae_int_t i) const;
1489     double& operator()(ae_int_t i);
1490 
1491     const double& operator[](ae_int_t i) const;
1492     double& operator[](ae_int_t i);
1493 
1494     //
1495     // This function allocates array[iLen] and copies data
1496     // pointed by pContent to its memory. Completely independent
1497     // copy of data is created.
1498     //
1499     void setcontent(ae_int_t iLen, const double *pContent);
1500 
1501     //
1502     // This function attaches array to memory pointed by pContent.
1503     // No own memory is allocated, no copying of data is performed,
1504     // so pContent pointer should be valid as long as we work with
1505     // array.
1506     //
1507     // After you attach array object to external memory, it becomes
1508     // "frozen": it is possible to read/write array elements, but
1509     // it is not allowed to resize it (no setlength() calls).
1510     //
1511     void attach_to_ptr(ae_int_t iLen, double *pContent);
1512 
1513     //
1514     // This function returns pointer to internal memory
1515     //
1516     double* getcontent();
1517     const double* getcontent() const;
1518 
1519 #if !defined(AE_NO_EXCEPTIONS)
1520     real_1d_array(const char *s);
1521     std::string tostring(int dps) const;
1522 #endif
1523 };
1524 
1525 class complex_1d_array : public ae_vector_wrapper
1526 {
1527 public:
1528     complex_1d_array();
1529     complex_1d_array(const complex_1d_array &rhs);
1530     complex_1d_array(alglib_impl::ae_vector *p);
1531     const complex_1d_array& operator=(const complex_1d_array &rhs);
1532     virtual ~complex_1d_array();
1533 
1534     const alglib::complex& operator()(ae_int_t i) const;
1535     alglib::complex& operator()(ae_int_t i);
1536 
1537     const alglib::complex& operator[](ae_int_t i) const;
1538     alglib::complex& operator[](ae_int_t i);
1539 
1540     //
1541     // This function allocates array[iLen] and copies data
1542     // pointed by pContent to its memory. Completely independent
1543     // copy of data is created.
1544     //
1545     void setcontent(ae_int_t iLen, const alglib::complex *pContent );
1546     alglib::complex* getcontent();
1547     const alglib::complex* getcontent() const;
1548 
1549 #if !defined(AE_NO_EXCEPTIONS)
1550     complex_1d_array(const char *s);
1551     std::string tostring(int dps) const;
1552 #endif
1553 };
1554 
1555 class ae_matrix_wrapper
1556 {
1557 public:
1558     //
1559     // Creates object attached to external ae_vector structure, with additional
1560     // check for matching datatypes (e_ptr->datatype==datatype is required).
1561     //
1562     ae_matrix_wrapper(alglib_impl::ae_matrix *e_ptr, alglib_impl::ae_datatype datatype);
1563 
1564     //
1565     // Creates zero-sized matrix of specified datatype.
1566     //
1567     ae_matrix_wrapper(alglib_impl::ae_datatype datatype);
1568 
1569     //
1570     // Creates copy of rhs, with additional check for matching datatypes
1571     // (rhs.datatype==datatype is required).
1572     //
1573     ae_matrix_wrapper(const ae_matrix_wrapper &rhs, alglib_impl::ae_datatype datatype);
1574 
1575     //
1576     // Destructor
1577     //
1578     virtual ~ae_matrix_wrapper();
1579 
1580 
1581     void setlength(ae_int_t rows, ae_int_t cols);
1582     ae_int_t rows() const;
1583     ae_int_t cols() const;
1584     bool isempty() const;
1585 	ae_int_t getstride() const;
1586 
1587     const alglib_impl::ae_matrix* c_ptr() const;
1588     alglib_impl::ae_matrix* c_ptr();
1589 private:
1590     ae_matrix_wrapper();
1591     ae_matrix_wrapper(const ae_matrix_wrapper &rhs);
1592     const ae_matrix_wrapper& operator=(const ae_matrix_wrapper &rhs);
1593 protected:
1594 #if !defined(AE_NO_EXCEPTIONS)
1595     //
1596     // Copies array given by string into current object. Additional
1597     // parameter DATATYPE contains information about type of the data
1598     // in S and type of the array to create.
1599     //
1600     // Current object is considered empty (this function should be
1601     // called from copy constructor).
1602     //
1603     ae_matrix_wrapper(const char *s, alglib_impl::ae_datatype datatype);
1604 #endif
1605 
1606     //
1607     // This function attaches wrapper object to external x_vector structure;
1608     // "frozen proxy" mode is activated (you can read/write, but can not reallocate
1609     // and do not own memory of the vector).
1610     //
1611     // NOTE: initial state of wrapper object is assumed to be initialized;
1612     //       all previously allocated memory is properly deallocated.
1613     //
1614     // NOTE: x_vector structure pointed by new_ptr is used only once; after
1615     //       we fetch pointer to memory and its size, this structure is ignored
1616     //       and not referenced anymore. So, you can pass pointers to temporary
1617     //       x-structures which are deallocated immediately after you call attach_to()
1618     //
1619     // NOTE: state structure is used for error-handling (a longjmp is performed
1620     //       on allocation error). All previously allocated memory is correctly
1621     //       freed on error.
1622     //
1623     void attach_to(alglib_impl::x_matrix *new_ptr, alglib_impl::ae_state *_state);
1624 
1625     //
1626     // This function initializes matrix and allocates own memory storage.
1627     //
1628     // NOTE: initial state of wrapper object is assumed to be uninitialized;
1629     //       if ptr!=NULL on entry, it is considered critical error (abort is called).
1630     //
1631     void init(ae_int_t rows, ae_int_t cols, alglib_impl::ae_datatype datatype, alglib_impl::ae_state *_state);
1632 
1633     //
1634     // Assigns RHS to current object.
1635     //
1636     // It has several branches depending on target object status:
1637     // * in case it is proxy object, data are copied into memory pointed by
1638     //   proxy. Function checks that source has exactly same size as target
1639     //   (exception is thrown on failure).
1640     // * in case it is non-proxy object, data allocated by object are cleared
1641     //   and a copy of RHS is created in target.
1642     //
1643     // NOTE: this function correctly handles assignments of the object to itself.
1644     //
1645     const ae_matrix_wrapper & assign(const ae_matrix_wrapper &rhs);
1646 
1647 
1648     //
1649     // Pointer to ae_matrix structure:
1650     // * ptr==&inner_mat means that wrapper object owns ae_matrix structure and
1651     //   is responsible for proper deallocation of its memory
1652     // * ptr!=&inner_mat means that wrapper object works with someone's other
1653     //   ae_matrix record and is not responsible for its memory; in this case
1654     //   inner_mat is assumed to be uninitialized.
1655     //
1656     alglib_impl::ae_matrix *ptr;
1657 
1658     //
1659     // Inner ae_matrix record.
1660     // Ignored for ptr!=&inner_mat.
1661     //
1662     alglib_impl::ae_matrix inner_mat;
1663 
1664     //
1665     // Whether this wrapper object is frozen proxy (you may read array, may
1666     // modify its value, but can not deallocate its memory or resize it) or not.
1667     //
1668     // If is_frozen_proxy==true and if:
1669     // * ptr==&inner_vec, it means that wrapper works with its own ae_vector
1670     //   structure, but this structure points to externally allocated memory.
1671     //   This memory is NOT owned by ae_vector object.
1672     // * ptr!=&inner_vec, it means that wrapper works with externally allocated
1673     //   and managed ae_vector structure. Both memory pointed by ae_vector and
1674     //   ae_vector structure itself are not owned by wrapper object.
1675     //
1676     bool                   is_frozen_proxy;
1677 };
1678 
1679 class boolean_2d_array : public ae_matrix_wrapper
1680 {
1681 public:
1682     boolean_2d_array();
1683     boolean_2d_array(const boolean_2d_array &rhs);
1684     boolean_2d_array(alglib_impl::ae_matrix *p);
1685     virtual ~boolean_2d_array();
1686 
1687     const boolean_2d_array& operator=(const boolean_2d_array &rhs);
1688 
1689     const ae_bool& operator()(ae_int_t i, ae_int_t j) const;
1690     ae_bool& operator()(ae_int_t i, ae_int_t j);
1691 
1692     const ae_bool* operator[](ae_int_t i) const;
1693     ae_bool* operator[](ae_int_t i);
1694 
1695     //
1696     // This function allocates array[irows,icols] and copies data
1697     // pointed by pContent to its memory. Completely independent
1698     // copy of data is created.
1699     //
1700     void setcontent(ae_int_t irows, ae_int_t icols, const bool *pContent );
1701 
1702 #if !defined(AE_NO_EXCEPTIONS)
1703     boolean_2d_array(const char *s);
1704     std::string tostring() const ;
1705 #endif
1706 };
1707 
1708 class integer_2d_array : public ae_matrix_wrapper
1709 {
1710 public:
1711     integer_2d_array();
1712     integer_2d_array(const integer_2d_array &rhs);
1713     integer_2d_array(alglib_impl::ae_matrix *p);
1714     virtual ~integer_2d_array();
1715 
1716     const integer_2d_array& operator=(const integer_2d_array &rhs);
1717 
1718     const ae_int_t& operator()(ae_int_t i, ae_int_t j) const;
1719     ae_int_t& operator()(ae_int_t i, ae_int_t j);
1720 
1721     const ae_int_t* operator[](ae_int_t i) const;
1722     ae_int_t* operator[](ae_int_t i);
1723 
1724     //
1725     // This function allocates array[irows,icols] and copies data
1726     // pointed by pContent to its memory. Completely independent
1727     // copy of data is created.
1728     //
1729     void setcontent(ae_int_t irows, ae_int_t icols, const ae_int_t *pContent );
1730 
1731 
1732 #if !defined(AE_NO_EXCEPTIONS)
1733     integer_2d_array(const char *s);
1734     std::string tostring() const;
1735 #endif
1736 };
1737 
1738 class real_2d_array : public ae_matrix_wrapper
1739 {
1740 public:
1741     real_2d_array();
1742     real_2d_array(const real_2d_array &rhs);
1743     real_2d_array(alglib_impl::ae_matrix *p);
1744     virtual ~real_2d_array();
1745 
1746     const real_2d_array& operator=(const real_2d_array &rhs);
1747 
1748     const double& operator()(ae_int_t i, ae_int_t j) const;
1749     double& operator()(ae_int_t i, ae_int_t j);
1750 
1751     const double* operator[](ae_int_t i) const;
1752     double* operator[](ae_int_t i);
1753 
1754     //
1755     // This function allocates array[irows,icols] and copies data
1756     // pointed by pContent to its memory. Completely independent
1757     // copy of data is created.
1758     //
1759     void setcontent(ae_int_t irows, ae_int_t icols, const double *pContent);
1760 
1761     //
1762     // This function attaches array to memory pointed by pContent:
1763     // * only minor amount of own memory is allocated - O(irows) bytes to
1764     //   store precomputed pointers; but no costly copying of O(rows*cols)
1765     //   data is performed.
1766     // * pContent pointer should be valid as long as we work with array
1767     //
1768     // After you attach array object to external memory, it becomes
1769     // "frozen": it is possible to read/write array elements, but
1770     // it is not allowed to resize it (no setlength() calls).
1771     //
1772     void attach_to_ptr(ae_int_t irows, ae_int_t icols, double *pContent);
1773 
1774 #if !defined(AE_NO_EXCEPTIONS)
1775     real_2d_array(const char *s);
1776     std::string tostring(int dps) const;
1777 #endif
1778 };
1779 
1780 class complex_2d_array : public ae_matrix_wrapper
1781 {
1782 public:
1783     complex_2d_array();
1784     complex_2d_array(const complex_2d_array &rhs);
1785     complex_2d_array(alglib_impl::ae_matrix *p);
1786     virtual ~complex_2d_array();
1787 
1788     const complex_2d_array& operator=(const complex_2d_array &rhs);
1789 
1790     const alglib::complex& operator()(ae_int_t i, ae_int_t j) const;
1791     alglib::complex& operator()(ae_int_t i, ae_int_t j);
1792 
1793     const alglib::complex* operator[](ae_int_t i) const;
1794     alglib::complex* operator[](ae_int_t i);
1795 
1796     //
1797     // This function allocates array[irows,icols] and copies data
1798     // pointed by pContent to its memory. Completely independent
1799     // copy of data is created.
1800     //
1801     void setcontent(ae_int_t irows, ae_int_t icols, const alglib::complex *pContent );
1802 
1803 #if !defined(AE_NO_EXCEPTIONS)
1804     complex_2d_array(const char *s);
1805     std::string tostring(int dps) const;
1806 #endif
1807 };
1808 
1809 /********************************************************************
1810 CSV operations: reading CSV file to real matrix.
1811 
1812 This function reads CSV  file  and  stores  its  contents  to  double
1813 precision 2D array. Format of the data file must conform to RFC  4180
1814 specification, with additional notes:
1815 * file size should be less than 2GB
1816 * ASCI encoding, UTF-8 without BOM (in header names) are supported
1817 * any character (comma/tab/space) may be used as field separator,  as
1818   long as it is distinct from one used for decimal point
1819 * multiple subsequent field separators (say, two  spaces) are treated
1820   as MULTIPLE separators, not one big separator
1821 * both comma and full stop may be used as decimal point. Parser  will
1822   automatically determine specific character being used.  Both  fixed
1823   and exponential number formats are  allowed.   Thousand  separators
1824   are NOT allowed.
1825 * line may end with \n (Unix style) or \r\n (Windows  style),  parser
1826   will automatically adapt to chosen convention
1827 * escaped fields (ones in double quotes) are not supported
1828 
1829 INPUT PARAMETERS:
1830     filename        relative/absolute path
1831     separator       character used to separate fields.  May  be  ' ',
1832                     ',', '\t'. Other separators are possible too.
1833     flags           several values combined with bitwise OR:
1834                     * alglib::CSV_SKIP_HEADERS -  if present, first row
1835                       contains headers  and  will  be  skipped.   Its
1836                       contents is used to determine fields count, and
1837                       that's all.
1838                     If no flags are specified, default value 0x0  (or
1839                     alglib::CSV_DEFAULT, which is same) should be used.
1840 
1841 OUTPUT PARAMETERS:
1842     out             2D matrix, CSV file parsed with atof()
1843 
1844 HANDLING OF SPECIAL CASES:
1845 * file does not exist - alglib::ap_error exception is thrown
1846 * empty file - empty array is returned (no exception)
1847 * skip_first_row=true, only one row in file - empty array is returned
1848 * field contents is not recognized by atof() - field value is replaced
1849   by 0.0
1850 ********************************************************************/
1851 #if !defined(AE_NO_EXCEPTIONS)
1852 void read_csv(const char *filename, char separator, int flags, alglib::real_2d_array &out);
1853 #endif
1854 
1855 
1856 /********************************************************************
1857 Constants and functions introduced for compatibility with AlgoPascal
1858 ********************************************************************/
1859 extern const double machineepsilon;
1860 extern const double maxrealnumber;
1861 extern const double minrealnumber;
1862 extern const double fp_nan;
1863 extern const double fp_posinf;
1864 extern const double fp_neginf;
1865 extern const ae_int_t endianness;
1866 static const int CSV_DEFAULT = 0x0;
1867 static const int CSV_SKIP_HEADERS = 0x1;
1868 
1869 int sign(double x);
1870 double randomreal();
1871 ae_int_t randominteger(ae_int_t maxv);
1872 int round(double x);
1873 int trunc(double x);
1874 int ifloor(double x);
1875 int iceil(double x);
1876 double pi();
1877 double sqr(double x);
1878 int maxint(int m1, int m2);
1879 int minint(int m1, int m2);
1880 double maxreal(double m1, double m2);
1881 double minreal(double m1, double m2);
1882 
1883 bool fp_eq(double v1, double v2);
1884 bool fp_neq(double v1, double v2);
1885 bool fp_less(double v1, double v2);
1886 bool fp_less_eq(double v1, double v2);
1887 bool fp_greater(double v1, double v2);
1888 bool fp_greater_eq(double v1, double v2);
1889 
1890 bool fp_isnan(double x);
1891 bool fp_isposinf(double x);
1892 bool fp_isneginf(double x);
1893 bool fp_isinf(double x);
1894 bool fp_isfinite(double x);
1895 
1896 /********************************************************************
1897 Exception handling macros
1898 ********************************************************************/
1899 #if !defined(AE_NO_EXCEPTIONS)
1900 ///////////////////////////////////////
1901 // exception-based code
1902 //////////////////////////////
1903 #define _ALGLIB_CPP_EXCEPTION(msg) throw alglib::ap_error(msg)
1904 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_BEGIN          try{
1905 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_END            }catch(...){ goto lbl_user_exception; }
1906 
1907 #else
1908 
1909 ///////////////////////////////////////
1910 // Exception-free version
1911 //////////////////////////////
1912 #if AE_OS!=AE_UNKNOWN
1913 #error Exception-free mode can not be combined with AE_OS definition
1914 #endif
1915 #if AE_THREADING!=AE_SERIAL_UNSAFE
1916 #error Exception-free mode is thread-unsafe; define AE_THREADING=AE_SERIAL_UNSAFE to prove that you know it
1917 #endif
1918 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_BEGIN
1919 #define _ALGLIB_CALLBACK_EXCEPTION_GUARD_END
1920 #define _ALGLIB_SET_ERROR_FLAG(s) set_error_flag(s)
1921 
1922 // sets eror flag and (optionally) sets error message
1923 void set_error_flag(const char *s = NULL);
1924 
1925 // returns error flag and optionally returns error message (loaded to *p_msg);
1926 // if error flag is not set (or p_msg is NULL) *p_msg is not changed.
1927 bool get_error_flag(const char **p_msg = NULL);
1928 
1929 // clears error flag (it is not cleared until explicit call to this function)
1930 void clear_error_flag();
1931 #endif
1932 
1933 }//namespace alglib
1934 
1935 
1936 
1937 /////////////////////////////////////////////////////////////////////////
1938 //
1939 // THIS SECTIONS CONTAINS DECLARATIONS FOR OPTIMIZED LINEAR ALGEBRA CODES
1940 // IT IS SHARED BETWEEN C++ AND PURE C LIBRARIES
1941 //
1942 /////////////////////////////////////////////////////////////////////////
1943 
1944 namespace alglib_impl
1945 {
1946 #define ALGLIB_INTERCEPTS_ABLAS
1947 void _ialglib_vzero(ae_int_t n, double *p, ae_int_t stride);
1948 void _ialglib_vzero_complex(ae_int_t n, ae_complex *p, ae_int_t stride);
1949 void _ialglib_vcopy(ae_int_t n, const double *a, ae_int_t stridea, double *b, ae_int_t strideb);
1950 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);
1951 void _ialglib_vcopy_dcomplex(ae_int_t n, const double *a, ae_int_t stridea, double *b, ae_int_t strideb, const char *conj);
1952 void _ialglib_mcopyblock(ae_int_t m, ae_int_t n, const double *a, ae_int_t op, ae_int_t stride, double *b);
1953 void _ialglib_mcopyunblock(ae_int_t m, ae_int_t n, const double *a, ae_int_t op, double *b, ae_int_t stride);
1954 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);
1955 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);
1956 
1957 ae_bool _ialglib_i_rmatrixgemmf(ae_int_t m,
1958      ae_int_t n,
1959      ae_int_t k,
1960      double alpha,
1961      ae_matrix *a,
1962      ae_int_t ia,
1963      ae_int_t ja,
1964      ae_int_t optypea,
1965      ae_matrix *b,
1966      ae_int_t ib,
1967      ae_int_t jb,
1968      ae_int_t optypeb,
1969      double beta,
1970      ae_matrix *c,
1971      ae_int_t ic,
1972      ae_int_t jc);
1973 ae_bool _ialglib_i_cmatrixgemmf(ae_int_t m,
1974      ae_int_t n,
1975      ae_int_t k,
1976      ae_complex alpha,
1977      ae_matrix *a,
1978      ae_int_t ia,
1979      ae_int_t ja,
1980      ae_int_t optypea,
1981      ae_matrix *b,
1982      ae_int_t ib,
1983      ae_int_t jb,
1984      ae_int_t optypeb,
1985      ae_complex beta,
1986      ae_matrix *c,
1987      ae_int_t ic,
1988      ae_int_t jc);
1989 ae_bool _ialglib_i_cmatrixrighttrsmf(ae_int_t m,
1990      ae_int_t n,
1991      ae_matrix *a,
1992      ae_int_t i1,
1993      ae_int_t j1,
1994      ae_bool isupper,
1995      ae_bool isunit,
1996      ae_int_t optype,
1997      ae_matrix *x,
1998      ae_int_t i2,
1999      ae_int_t j2);
2000 ae_bool _ialglib_i_rmatrixrighttrsmf(ae_int_t m,
2001      ae_int_t n,
2002      ae_matrix *a,
2003      ae_int_t i1,
2004      ae_int_t j1,
2005      ae_bool isupper,
2006      ae_bool isunit,
2007      ae_int_t optype,
2008      ae_matrix *x,
2009      ae_int_t i2,
2010      ae_int_t j2);
2011 ae_bool _ialglib_i_cmatrixlefttrsmf(ae_int_t m,
2012      ae_int_t n,
2013      ae_matrix *a,
2014      ae_int_t i1,
2015      ae_int_t j1,
2016      ae_bool isupper,
2017      ae_bool isunit,
2018      ae_int_t optype,
2019      ae_matrix *x,
2020      ae_int_t i2,
2021      ae_int_t j2);
2022 ae_bool _ialglib_i_rmatrixlefttrsmf(ae_int_t m,
2023      ae_int_t n,
2024      ae_matrix *a,
2025      ae_int_t i1,
2026      ae_int_t j1,
2027      ae_bool isupper,
2028      ae_bool isunit,
2029      ae_int_t optype,
2030      ae_matrix *x,
2031      ae_int_t i2,
2032      ae_int_t j2);
2033 ae_bool _ialglib_i_cmatrixherkf(ae_int_t n,
2034      ae_int_t k,
2035      double alpha,
2036      ae_matrix *a,
2037      ae_int_t ia,
2038      ae_int_t ja,
2039      ae_int_t optypea,
2040      double beta,
2041      ae_matrix *c,
2042      ae_int_t ic,
2043      ae_int_t jc,
2044      ae_bool isupper);
2045 ae_bool _ialglib_i_rmatrixsyrkf(ae_int_t n,
2046      ae_int_t k,
2047      double alpha,
2048      ae_matrix *a,
2049      ae_int_t ia,
2050      ae_int_t ja,
2051      ae_int_t optypea,
2052      double beta,
2053      ae_matrix *c,
2054      ae_int_t ic,
2055      ae_int_t jc,
2056      ae_bool isupper);
2057 ae_bool _ialglib_i_cmatrixrank1f(ae_int_t m,
2058      ae_int_t n,
2059      ae_matrix *a,
2060      ae_int_t ia,
2061      ae_int_t ja,
2062      ae_vector *u,
2063      ae_int_t uoffs,
2064      ae_vector *v,
2065      ae_int_t voffs);
2066 ae_bool _ialglib_i_rmatrixrank1f(ae_int_t m,
2067      ae_int_t n,
2068      ae_matrix *a,
2069      ae_int_t ia,
2070      ae_int_t ja,
2071      ae_vector *u,
2072      ae_int_t uoffs,
2073      ae_vector *v,
2074      ae_int_t voffs);
2075 ae_bool _ialglib_i_rmatrixgerf(ae_int_t m,
2076      ae_int_t n,
2077      ae_matrix *a,
2078      ae_int_t ia,
2079      ae_int_t ja,
2080      double alpha,
2081      ae_vector *u,
2082      ae_int_t uoffs,
2083      ae_vector *v,
2084      ae_int_t voffs);
2085 
2086 
2087 
2088 }
2089 
2090 
2091 /////////////////////////////////////////////////////////////////////////
2092 //
2093 // THIS SECTION CONTAINS PARALLEL SUBROUTINES
2094 //
2095 /////////////////////////////////////////////////////////////////////////
2096 
2097 namespace alglib_impl
2098 {
2099 
2100 }
2101 
2102 
2103 /////////////////////////////////////////////////////////////////////////
2104 //
2105 // THIS SECTION CONTAINS DEFINITIONS FOR PARTIAL COMPILATION
2106 //
2107 /////////////////////////////////////////////////////////////////////////
2108 #ifdef AE_COMPILE_SCODES
2109 #define AE_PARTIAL_BUILD
2110 #endif
2111 
2112 #ifdef AE_COMPILE_APSERV
2113 #define AE_PARTIAL_BUILD
2114 #endif
2115 
2116 #ifdef AE_COMPILE_TSORT
2117 #define AE_PARTIAL_BUILD
2118 #define AE_COMPILE_APSERV
2119 #endif
2120 
2121 #ifdef AE_COMPILE_NEARESTNEIGHBOR
2122 #define AE_PARTIAL_BUILD
2123 #define AE_COMPILE_SCODES
2124 #define AE_COMPILE_APSERV
2125 #define AE_COMPILE_TSORT
2126 #endif
2127 
2128 #ifdef AE_COMPILE_HQRND
2129 #define AE_PARTIAL_BUILD
2130 #define AE_COMPILE_APSERV
2131 #endif
2132 
2133 #ifdef AE_COMPILE_XDEBUG
2134 #define AE_PARTIAL_BUILD
2135 #endif
2136 
2137 #ifdef AE_COMPILE_ODESOLVER
2138 #define AE_PARTIAL_BUILD
2139 #define AE_COMPILE_APSERV
2140 #endif
2141 
2142 #ifdef AE_COMPILE_ABLASMKL
2143 #define AE_PARTIAL_BUILD
2144 #endif
2145 
2146 #ifdef AE_COMPILE_SPARSE
2147 #define AE_PARTIAL_BUILD
2148 #define AE_COMPILE_APSERV
2149 #define AE_COMPILE_ABLASMKL
2150 #define AE_COMPILE_HQRND
2151 #define AE_COMPILE_TSORT
2152 #endif
2153 
2154 #ifdef AE_COMPILE_ABLASF
2155 #define AE_PARTIAL_BUILD
2156 #endif
2157 
2158 #ifdef AE_COMPILE_ABLAS
2159 #define AE_PARTIAL_BUILD
2160 #define AE_COMPILE_APSERV
2161 #define AE_COMPILE_ABLASF
2162 #define AE_COMPILE_ABLASMKL
2163 #endif
2164 
2165 #ifdef AE_COMPILE_DLU
2166 #define AE_PARTIAL_BUILD
2167 #define AE_COMPILE_APSERV
2168 #define AE_COMPILE_ABLASF
2169 #define AE_COMPILE_ABLASMKL
2170 #define AE_COMPILE_ABLAS
2171 #endif
2172 
2173 #ifdef AE_COMPILE_SPTRF
2174 #define AE_PARTIAL_BUILD
2175 #define AE_COMPILE_APSERV
2176 #define AE_COMPILE_ABLASF
2177 #define AE_COMPILE_ABLASMKL
2178 #define AE_COMPILE_ABLAS
2179 #define AE_COMPILE_HQRND
2180 #define AE_COMPILE_TSORT
2181 #define AE_COMPILE_SPARSE
2182 #define AE_COMPILE_DLU
2183 #endif
2184 
2185 #ifdef AE_COMPILE_CREFLECTIONS
2186 #define AE_PARTIAL_BUILD
2187 #endif
2188 
2189 #ifdef AE_COMPILE_MATGEN
2190 #define AE_PARTIAL_BUILD
2191 #define AE_COMPILE_APSERV
2192 #define AE_COMPILE_ABLASF
2193 #define AE_COMPILE_ABLASMKL
2194 #define AE_COMPILE_ABLAS
2195 #define AE_COMPILE_CREFLECTIONS
2196 #define AE_COMPILE_HQRND
2197 #endif
2198 
2199 #ifdef AE_COMPILE_ROTATIONS
2200 #define AE_PARTIAL_BUILD
2201 #endif
2202 
2203 #ifdef AE_COMPILE_TRFAC
2204 #define AE_PARTIAL_BUILD
2205 #define AE_COMPILE_APSERV
2206 #define AE_COMPILE_ABLASF
2207 #define AE_COMPILE_ABLASMKL
2208 #define AE_COMPILE_ABLAS
2209 #define AE_COMPILE_HQRND
2210 #define AE_COMPILE_TSORT
2211 #define AE_COMPILE_SPARSE
2212 #define AE_COMPILE_DLU
2213 #define AE_COMPILE_SPTRF
2214 #define AE_COMPILE_CREFLECTIONS
2215 #define AE_COMPILE_MATGEN
2216 #define AE_COMPILE_ROTATIONS
2217 #endif
2218 
2219 #ifdef AE_COMPILE_TRLINSOLVE
2220 #define AE_PARTIAL_BUILD
2221 #endif
2222 
2223 #ifdef AE_COMPILE_SAFESOLVE
2224 #define AE_PARTIAL_BUILD
2225 #endif
2226 
2227 #ifdef AE_COMPILE_RCOND
2228 #define AE_PARTIAL_BUILD
2229 #define AE_COMPILE_APSERV
2230 #define AE_COMPILE_ABLASF
2231 #define AE_COMPILE_ABLASMKL
2232 #define AE_COMPILE_ABLAS
2233 #define AE_COMPILE_HQRND
2234 #define AE_COMPILE_TSORT
2235 #define AE_COMPILE_SPARSE
2236 #define AE_COMPILE_DLU
2237 #define AE_COMPILE_SPTRF
2238 #define AE_COMPILE_CREFLECTIONS
2239 #define AE_COMPILE_MATGEN
2240 #define AE_COMPILE_ROTATIONS
2241 #define AE_COMPILE_TRFAC
2242 #define AE_COMPILE_TRLINSOLVE
2243 #define AE_COMPILE_SAFESOLVE
2244 #endif
2245 
2246 #ifdef AE_COMPILE_MATINV
2247 #define AE_PARTIAL_BUILD
2248 #define AE_COMPILE_APSERV
2249 #define AE_COMPILE_ABLASF
2250 #define AE_COMPILE_ABLASMKL
2251 #define AE_COMPILE_ABLAS
2252 #define AE_COMPILE_HQRND
2253 #define AE_COMPILE_TSORT
2254 #define AE_COMPILE_SPARSE
2255 #define AE_COMPILE_DLU
2256 #define AE_COMPILE_SPTRF
2257 #define AE_COMPILE_CREFLECTIONS
2258 #define AE_COMPILE_MATGEN
2259 #define AE_COMPILE_ROTATIONS
2260 #define AE_COMPILE_TRFAC
2261 #define AE_COMPILE_TRLINSOLVE
2262 #define AE_COMPILE_SAFESOLVE
2263 #define AE_COMPILE_RCOND
2264 #endif
2265 
2266 #ifdef AE_COMPILE_HBLAS
2267 #define AE_PARTIAL_BUILD
2268 #endif
2269 
2270 #ifdef AE_COMPILE_SBLAS
2271 #define AE_PARTIAL_BUILD
2272 #define AE_COMPILE_APSERV
2273 #endif
2274 
2275 #ifdef AE_COMPILE_ORTFAC
2276 #define AE_PARTIAL_BUILD
2277 #define AE_COMPILE_APSERV
2278 #define AE_COMPILE_HQRND
2279 #define AE_COMPILE_HBLAS
2280 #define AE_COMPILE_CREFLECTIONS
2281 #define AE_COMPILE_SBLAS
2282 #define AE_COMPILE_ABLASF
2283 #define AE_COMPILE_ABLASMKL
2284 #define AE_COMPILE_ABLAS
2285 #endif
2286 
2287 #ifdef AE_COMPILE_FBLS
2288 #define AE_PARTIAL_BUILD
2289 #define AE_COMPILE_APSERV
2290 #define AE_COMPILE_ABLASF
2291 #define AE_COMPILE_ABLASMKL
2292 #define AE_COMPILE_ABLAS
2293 #define AE_COMPILE_HQRND
2294 #define AE_COMPILE_HBLAS
2295 #define AE_COMPILE_CREFLECTIONS
2296 #define AE_COMPILE_SBLAS
2297 #define AE_COMPILE_ORTFAC
2298 #endif
2299 
2300 #ifdef AE_COMPILE_CQMODELS
2301 #define AE_PARTIAL_BUILD
2302 #define AE_COMPILE_APSERV
2303 #define AE_COMPILE_ABLASF
2304 #define AE_COMPILE_ABLASMKL
2305 #define AE_COMPILE_ABLAS
2306 #define AE_COMPILE_HQRND
2307 #define AE_COMPILE_TSORT
2308 #define AE_COMPILE_SPARSE
2309 #define AE_COMPILE_DLU
2310 #define AE_COMPILE_SPTRF
2311 #define AE_COMPILE_CREFLECTIONS
2312 #define AE_COMPILE_MATGEN
2313 #define AE_COMPILE_ROTATIONS
2314 #define AE_COMPILE_TRFAC
2315 #define AE_COMPILE_HBLAS
2316 #define AE_COMPILE_SBLAS
2317 #define AE_COMPILE_ORTFAC
2318 #define AE_COMPILE_FBLS
2319 #endif
2320 
2321 #ifdef AE_COMPILE_OPTGUARDAPI
2322 #define AE_PARTIAL_BUILD
2323 #define AE_COMPILE_APSERV
2324 #endif
2325 
2326 #ifdef AE_COMPILE_BLAS
2327 #define AE_PARTIAL_BUILD
2328 #endif
2329 
2330 #ifdef AE_COMPILE_BDSVD
2331 #define AE_PARTIAL_BUILD
2332 #define AE_COMPILE_ROTATIONS
2333 #define AE_COMPILE_ABLASMKL
2334 #define AE_COMPILE_APSERV
2335 #define AE_COMPILE_ABLASF
2336 #define AE_COMPILE_ABLAS
2337 #define AE_COMPILE_HQRND
2338 #endif
2339 
2340 #ifdef AE_COMPILE_SVD
2341 #define AE_PARTIAL_BUILD
2342 #define AE_COMPILE_APSERV
2343 #define AE_COMPILE_HQRND
2344 #define AE_COMPILE_HBLAS
2345 #define AE_COMPILE_CREFLECTIONS
2346 #define AE_COMPILE_SBLAS
2347 #define AE_COMPILE_ABLASF
2348 #define AE_COMPILE_ABLASMKL
2349 #define AE_COMPILE_ABLAS
2350 #define AE_COMPILE_ORTFAC
2351 #define AE_COMPILE_BLAS
2352 #define AE_COMPILE_ROTATIONS
2353 #define AE_COMPILE_BDSVD
2354 #endif
2355 
2356 #ifdef AE_COMPILE_OPTSERV
2357 #define AE_PARTIAL_BUILD
2358 #define AE_COMPILE_APSERV
2359 #define AE_COMPILE_TSORT
2360 #define AE_COMPILE_OPTGUARDAPI
2361 #define AE_COMPILE_ABLASF
2362 #define AE_COMPILE_ABLASMKL
2363 #define AE_COMPILE_ABLAS
2364 #define AE_COMPILE_CREFLECTIONS
2365 #define AE_COMPILE_HQRND
2366 #define AE_COMPILE_MATGEN
2367 #define AE_COMPILE_SPARSE
2368 #define AE_COMPILE_DLU
2369 #define AE_COMPILE_SPTRF
2370 #define AE_COMPILE_ROTATIONS
2371 #define AE_COMPILE_TRFAC
2372 #define AE_COMPILE_TRLINSOLVE
2373 #define AE_COMPILE_SAFESOLVE
2374 #define AE_COMPILE_RCOND
2375 #define AE_COMPILE_MATINV
2376 #define AE_COMPILE_HBLAS
2377 #define AE_COMPILE_SBLAS
2378 #define AE_COMPILE_ORTFAC
2379 #define AE_COMPILE_BLAS
2380 #define AE_COMPILE_BDSVD
2381 #define AE_COMPILE_SVD
2382 #endif
2383 
2384 #ifdef AE_COMPILE_SNNLS
2385 #define AE_PARTIAL_BUILD
2386 #define AE_COMPILE_APSERV
2387 #define AE_COMPILE_ABLASF
2388 #define AE_COMPILE_ABLASMKL
2389 #define AE_COMPILE_ABLAS
2390 #define AE_COMPILE_HQRND
2391 #define AE_COMPILE_TSORT
2392 #define AE_COMPILE_SPARSE
2393 #define AE_COMPILE_DLU
2394 #define AE_COMPILE_SPTRF
2395 #define AE_COMPILE_CREFLECTIONS
2396 #define AE_COMPILE_MATGEN
2397 #define AE_COMPILE_ROTATIONS
2398 #define AE_COMPILE_TRFAC
2399 #define AE_COMPILE_HBLAS
2400 #define AE_COMPILE_SBLAS
2401 #define AE_COMPILE_ORTFAC
2402 #define AE_COMPILE_FBLS
2403 #endif
2404 
2405 #ifdef AE_COMPILE_SACTIVESETS
2406 #define AE_PARTIAL_BUILD
2407 #define AE_COMPILE_APSERV
2408 #define AE_COMPILE_ABLASF
2409 #define AE_COMPILE_ABLASMKL
2410 #define AE_COMPILE_ABLAS
2411 #define AE_COMPILE_HQRND
2412 #define AE_COMPILE_TSORT
2413 #define AE_COMPILE_SPARSE
2414 #define AE_COMPILE_DLU
2415 #define AE_COMPILE_SPTRF
2416 #define AE_COMPILE_CREFLECTIONS
2417 #define AE_COMPILE_MATGEN
2418 #define AE_COMPILE_ROTATIONS
2419 #define AE_COMPILE_TRFAC
2420 #define AE_COMPILE_HBLAS
2421 #define AE_COMPILE_SBLAS
2422 #define AE_COMPILE_ORTFAC
2423 #define AE_COMPILE_FBLS
2424 #define AE_COMPILE_SNNLS
2425 #define AE_COMPILE_OPTGUARDAPI
2426 #define AE_COMPILE_TRLINSOLVE
2427 #define AE_COMPILE_SAFESOLVE
2428 #define AE_COMPILE_RCOND
2429 #define AE_COMPILE_MATINV
2430 #define AE_COMPILE_BLAS
2431 #define AE_COMPILE_BDSVD
2432 #define AE_COMPILE_SVD
2433 #define AE_COMPILE_OPTSERV
2434 #endif
2435 
2436 #ifdef AE_COMPILE_QQPSOLVER
2437 #define AE_PARTIAL_BUILD
2438 #define AE_COMPILE_APSERV
2439 #define AE_COMPILE_ABLASMKL
2440 #define AE_COMPILE_HQRND
2441 #define AE_COMPILE_TSORT
2442 #define AE_COMPILE_SPARSE
2443 #define AE_COMPILE_ABLASF
2444 #define AE_COMPILE_ABLAS
2445 #define AE_COMPILE_DLU
2446 #define AE_COMPILE_SPTRF
2447 #define AE_COMPILE_CREFLECTIONS
2448 #define AE_COMPILE_MATGEN
2449 #define AE_COMPILE_ROTATIONS
2450 #define AE_COMPILE_TRFAC
2451 #define AE_COMPILE_TRLINSOLVE
2452 #define AE_COMPILE_SAFESOLVE
2453 #define AE_COMPILE_RCOND
2454 #define AE_COMPILE_MATINV
2455 #define AE_COMPILE_HBLAS
2456 #define AE_COMPILE_SBLAS
2457 #define AE_COMPILE_ORTFAC
2458 #define AE_COMPILE_FBLS
2459 #define AE_COMPILE_CQMODELS
2460 #define AE_COMPILE_OPTGUARDAPI
2461 #define AE_COMPILE_BLAS
2462 #define AE_COMPILE_BDSVD
2463 #define AE_COMPILE_SVD
2464 #define AE_COMPILE_OPTSERV
2465 #define AE_COMPILE_SNNLS
2466 #define AE_COMPILE_SACTIVESETS
2467 #endif
2468 
2469 #ifdef AE_COMPILE_LINMIN
2470 #define AE_PARTIAL_BUILD
2471 #endif
2472 
2473 #ifdef AE_COMPILE_MINLBFGS
2474 #define AE_PARTIAL_BUILD
2475 #define AE_COMPILE_LINMIN
2476 #define AE_COMPILE_APSERV
2477 #define AE_COMPILE_TSORT
2478 #define AE_COMPILE_OPTGUARDAPI
2479 #define AE_COMPILE_ABLASF
2480 #define AE_COMPILE_ABLASMKL
2481 #define AE_COMPILE_ABLAS
2482 #define AE_COMPILE_CREFLECTIONS
2483 #define AE_COMPILE_HQRND
2484 #define AE_COMPILE_MATGEN
2485 #define AE_COMPILE_SPARSE
2486 #define AE_COMPILE_DLU
2487 #define AE_COMPILE_SPTRF
2488 #define AE_COMPILE_ROTATIONS
2489 #define AE_COMPILE_TRFAC
2490 #define AE_COMPILE_TRLINSOLVE
2491 #define AE_COMPILE_SAFESOLVE
2492 #define AE_COMPILE_RCOND
2493 #define AE_COMPILE_MATINV
2494 #define AE_COMPILE_HBLAS
2495 #define AE_COMPILE_SBLAS
2496 #define AE_COMPILE_ORTFAC
2497 #define AE_COMPILE_BLAS
2498 #define AE_COMPILE_BDSVD
2499 #define AE_COMPILE_SVD
2500 #define AE_COMPILE_OPTSERV
2501 #define AE_COMPILE_FBLS
2502 #endif
2503 
2504 #ifdef AE_COMPILE_XBLAS
2505 #define AE_PARTIAL_BUILD
2506 #endif
2507 
2508 #ifdef AE_COMPILE_DIRECTDENSESOLVERS
2509 #define AE_PARTIAL_BUILD
2510 #define AE_COMPILE_APSERV
2511 #define AE_COMPILE_HQRND
2512 #define AE_COMPILE_HBLAS
2513 #define AE_COMPILE_CREFLECTIONS
2514 #define AE_COMPILE_SBLAS
2515 #define AE_COMPILE_ABLASF
2516 #define AE_COMPILE_ABLASMKL
2517 #define AE_COMPILE_ABLAS
2518 #define AE_COMPILE_ORTFAC
2519 #define AE_COMPILE_BLAS
2520 #define AE_COMPILE_ROTATIONS
2521 #define AE_COMPILE_BDSVD
2522 #define AE_COMPILE_SVD
2523 #define AE_COMPILE_TSORT
2524 #define AE_COMPILE_SPARSE
2525 #define AE_COMPILE_DLU
2526 #define AE_COMPILE_SPTRF
2527 #define AE_COMPILE_MATGEN
2528 #define AE_COMPILE_TRFAC
2529 #define AE_COMPILE_TRLINSOLVE
2530 #define AE_COMPILE_SAFESOLVE
2531 #define AE_COMPILE_RCOND
2532 #define AE_COMPILE_XBLAS
2533 #endif
2534 
2535 #ifdef AE_COMPILE_NORMESTIMATOR
2536 #define AE_PARTIAL_BUILD
2537 #define AE_COMPILE_APSERV
2538 #define AE_COMPILE_HQRND
2539 #define AE_COMPILE_ABLASMKL
2540 #define AE_COMPILE_TSORT
2541 #define AE_COMPILE_SPARSE
2542 #define AE_COMPILE_ABLASF
2543 #define AE_COMPILE_ABLAS
2544 #define AE_COMPILE_CREFLECTIONS
2545 #define AE_COMPILE_MATGEN
2546 #endif
2547 
2548 #ifdef AE_COMPILE_LINLSQR
2549 #define AE_PARTIAL_BUILD
2550 #define AE_COMPILE_APSERV
2551 #define AE_COMPILE_ABLASF
2552 #define AE_COMPILE_ABLASMKL
2553 #define AE_COMPILE_ABLAS
2554 #define AE_COMPILE_CREFLECTIONS
2555 #define AE_COMPILE_HQRND
2556 #define AE_COMPILE_MATGEN
2557 #define AE_COMPILE_TSORT
2558 #define AE_COMPILE_SPARSE
2559 #define AE_COMPILE_NORMESTIMATOR
2560 #define AE_COMPILE_HBLAS
2561 #define AE_COMPILE_SBLAS
2562 #define AE_COMPILE_ORTFAC
2563 #define AE_COMPILE_BLAS
2564 #define AE_COMPILE_ROTATIONS
2565 #define AE_COMPILE_BDSVD
2566 #define AE_COMPILE_SVD
2567 #endif
2568 
2569 #ifdef AE_COMPILE_QPDENSEAULSOLVER
2570 #define AE_PARTIAL_BUILD
2571 #define AE_COMPILE_APSERV
2572 #define AE_COMPILE_ABLASMKL
2573 #define AE_COMPILE_HQRND
2574 #define AE_COMPILE_TSORT
2575 #define AE_COMPILE_SPARSE
2576 #define AE_COMPILE_ABLASF
2577 #define AE_COMPILE_ABLAS
2578 #define AE_COMPILE_DLU
2579 #define AE_COMPILE_SPTRF
2580 #define AE_COMPILE_CREFLECTIONS
2581 #define AE_COMPILE_MATGEN
2582 #define AE_COMPILE_ROTATIONS
2583 #define AE_COMPILE_TRFAC
2584 #define AE_COMPILE_TRLINSOLVE
2585 #define AE_COMPILE_SAFESOLVE
2586 #define AE_COMPILE_RCOND
2587 #define AE_COMPILE_MATINV
2588 #define AE_COMPILE_HBLAS
2589 #define AE_COMPILE_SBLAS
2590 #define AE_COMPILE_ORTFAC
2591 #define AE_COMPILE_BLAS
2592 #define AE_COMPILE_BDSVD
2593 #define AE_COMPILE_SVD
2594 #define AE_COMPILE_XBLAS
2595 #define AE_COMPILE_DIRECTDENSESOLVERS
2596 #define AE_COMPILE_NORMESTIMATOR
2597 #define AE_COMPILE_LINLSQR
2598 #define AE_COMPILE_LINMIN
2599 #define AE_COMPILE_OPTGUARDAPI
2600 #define AE_COMPILE_OPTSERV
2601 #define AE_COMPILE_FBLS
2602 #define AE_COMPILE_MINLBFGS
2603 #define AE_COMPILE_CQMODELS
2604 #define AE_COMPILE_SNNLS
2605 #define AE_COMPILE_SACTIVESETS
2606 #define AE_COMPILE_QQPSOLVER
2607 #endif
2608 
2609 #ifdef AE_COMPILE_MINBLEIC
2610 #define AE_PARTIAL_BUILD
2611 #define AE_COMPILE_LINMIN
2612 #define AE_COMPILE_APSERV
2613 #define AE_COMPILE_TSORT
2614 #define AE_COMPILE_OPTGUARDAPI
2615 #define AE_COMPILE_ABLASF
2616 #define AE_COMPILE_ABLASMKL
2617 #define AE_COMPILE_ABLAS
2618 #define AE_COMPILE_CREFLECTIONS
2619 #define AE_COMPILE_HQRND
2620 #define AE_COMPILE_MATGEN
2621 #define AE_COMPILE_SPARSE
2622 #define AE_COMPILE_DLU
2623 #define AE_COMPILE_SPTRF
2624 #define AE_COMPILE_ROTATIONS
2625 #define AE_COMPILE_TRFAC
2626 #define AE_COMPILE_TRLINSOLVE
2627 #define AE_COMPILE_SAFESOLVE
2628 #define AE_COMPILE_RCOND
2629 #define AE_COMPILE_MATINV
2630 #define AE_COMPILE_HBLAS
2631 #define AE_COMPILE_SBLAS
2632 #define AE_COMPILE_ORTFAC
2633 #define AE_COMPILE_BLAS
2634 #define AE_COMPILE_BDSVD
2635 #define AE_COMPILE_SVD
2636 #define AE_COMPILE_OPTSERV
2637 #define AE_COMPILE_FBLS
2638 #define AE_COMPILE_CQMODELS
2639 #define AE_COMPILE_SNNLS
2640 #define AE_COMPILE_SACTIVESETS
2641 #endif
2642 
2643 #ifdef AE_COMPILE_QPBLEICSOLVER
2644 #define AE_PARTIAL_BUILD
2645 #define AE_COMPILE_APSERV
2646 #define AE_COMPILE_ABLASMKL
2647 #define AE_COMPILE_HQRND
2648 #define AE_COMPILE_TSORT
2649 #define AE_COMPILE_SPARSE
2650 #define AE_COMPILE_ABLASF
2651 #define AE_COMPILE_ABLAS
2652 #define AE_COMPILE_DLU
2653 #define AE_COMPILE_SPTRF
2654 #define AE_COMPILE_CREFLECTIONS
2655 #define AE_COMPILE_MATGEN
2656 #define AE_COMPILE_ROTATIONS
2657 #define AE_COMPILE_TRFAC
2658 #define AE_COMPILE_TRLINSOLVE
2659 #define AE_COMPILE_SAFESOLVE
2660 #define AE_COMPILE_RCOND
2661 #define AE_COMPILE_MATINV
2662 #define AE_COMPILE_LINMIN
2663 #define AE_COMPILE_OPTGUARDAPI
2664 #define AE_COMPILE_HBLAS
2665 #define AE_COMPILE_SBLAS
2666 #define AE_COMPILE_ORTFAC
2667 #define AE_COMPILE_BLAS
2668 #define AE_COMPILE_BDSVD
2669 #define AE_COMPILE_SVD
2670 #define AE_COMPILE_OPTSERV
2671 #define AE_COMPILE_FBLS
2672 #define AE_COMPILE_CQMODELS
2673 #define AE_COMPILE_SNNLS
2674 #define AE_COMPILE_SACTIVESETS
2675 #define AE_COMPILE_MINBLEIC
2676 #endif
2677 
2678 #ifdef AE_COMPILE_MINQP
2679 #define AE_PARTIAL_BUILD
2680 #define AE_COMPILE_APSERV
2681 #define AE_COMPILE_ABLASMKL
2682 #define AE_COMPILE_HQRND
2683 #define AE_COMPILE_TSORT
2684 #define AE_COMPILE_SPARSE
2685 #define AE_COMPILE_ABLASF
2686 #define AE_COMPILE_ABLAS
2687 #define AE_COMPILE_DLU
2688 #define AE_COMPILE_SPTRF
2689 #define AE_COMPILE_CREFLECTIONS
2690 #define AE_COMPILE_MATGEN
2691 #define AE_COMPILE_ROTATIONS
2692 #define AE_COMPILE_TRFAC
2693 #define AE_COMPILE_TRLINSOLVE
2694 #define AE_COMPILE_SAFESOLVE
2695 #define AE_COMPILE_RCOND
2696 #define AE_COMPILE_MATINV
2697 #define AE_COMPILE_HBLAS
2698 #define AE_COMPILE_SBLAS
2699 #define AE_COMPILE_ORTFAC
2700 #define AE_COMPILE_BLAS
2701 #define AE_COMPILE_BDSVD
2702 #define AE_COMPILE_SVD
2703 #define AE_COMPILE_XBLAS
2704 #define AE_COMPILE_DIRECTDENSESOLVERS
2705 #define AE_COMPILE_NORMESTIMATOR
2706 #define AE_COMPILE_LINLSQR
2707 #define AE_COMPILE_LINMIN
2708 #define AE_COMPILE_OPTGUARDAPI
2709 #define AE_COMPILE_OPTSERV
2710 #define AE_COMPILE_FBLS
2711 #define AE_COMPILE_MINLBFGS
2712 #define AE_COMPILE_CQMODELS
2713 #define AE_COMPILE_SNNLS
2714 #define AE_COMPILE_SACTIVESETS
2715 #define AE_COMPILE_QQPSOLVER
2716 #define AE_COMPILE_QPDENSEAULSOLVER
2717 #define AE_COMPILE_MINBLEIC
2718 #define AE_COMPILE_QPBLEICSOLVER
2719 #endif
2720 
2721 #ifdef AE_COMPILE_REVISEDDUALSIMPLEX
2722 #define AE_PARTIAL_BUILD
2723 #define AE_COMPILE_APSERV
2724 #define AE_COMPILE_ABLASF
2725 #define AE_COMPILE_ABLASMKL
2726 #define AE_COMPILE_ABLAS
2727 #define AE_COMPILE_HQRND
2728 #define AE_COMPILE_TSORT
2729 #define AE_COMPILE_SPARSE
2730 #define AE_COMPILE_DLU
2731 #define AE_COMPILE_SPTRF
2732 #define AE_COMPILE_CREFLECTIONS
2733 #define AE_COMPILE_MATGEN
2734 #define AE_COMPILE_ROTATIONS
2735 #define AE_COMPILE_TRFAC
2736 #endif
2737 
2738 #ifdef AE_COMPILE_MINLP
2739 #define AE_PARTIAL_BUILD
2740 #define AE_COMPILE_APSERV
2741 #define AE_COMPILE_ABLASMKL
2742 #define AE_COMPILE_HQRND
2743 #define AE_COMPILE_TSORT
2744 #define AE_COMPILE_SPARSE
2745 #define AE_COMPILE_ABLASF
2746 #define AE_COMPILE_ABLAS
2747 #define AE_COMPILE_DLU
2748 #define AE_COMPILE_SPTRF
2749 #define AE_COMPILE_CREFLECTIONS
2750 #define AE_COMPILE_MATGEN
2751 #define AE_COMPILE_ROTATIONS
2752 #define AE_COMPILE_TRFAC
2753 #define AE_COMPILE_REVISEDDUALSIMPLEX
2754 #endif
2755 
2756 #ifdef AE_COMPILE_NLCSLP
2757 #define AE_PARTIAL_BUILD
2758 #define AE_COMPILE_LINMIN
2759 #define AE_COMPILE_APSERV
2760 #define AE_COMPILE_TSORT
2761 #define AE_COMPILE_OPTGUARDAPI
2762 #define AE_COMPILE_ABLASF
2763 #define AE_COMPILE_ABLASMKL
2764 #define AE_COMPILE_ABLAS
2765 #define AE_COMPILE_CREFLECTIONS
2766 #define AE_COMPILE_HQRND
2767 #define AE_COMPILE_MATGEN
2768 #define AE_COMPILE_SPARSE
2769 #define AE_COMPILE_DLU
2770 #define AE_COMPILE_SPTRF
2771 #define AE_COMPILE_ROTATIONS
2772 #define AE_COMPILE_TRFAC
2773 #define AE_COMPILE_TRLINSOLVE
2774 #define AE_COMPILE_SAFESOLVE
2775 #define AE_COMPILE_RCOND
2776 #define AE_COMPILE_MATINV
2777 #define AE_COMPILE_HBLAS
2778 #define AE_COMPILE_SBLAS
2779 #define AE_COMPILE_ORTFAC
2780 #define AE_COMPILE_BLAS
2781 #define AE_COMPILE_BDSVD
2782 #define AE_COMPILE_SVD
2783 #define AE_COMPILE_OPTSERV
2784 #define AE_COMPILE_REVISEDDUALSIMPLEX
2785 #endif
2786 
2787 #ifdef AE_COMPILE_MINNLC
2788 #define AE_PARTIAL_BUILD
2789 #define AE_COMPILE_LINMIN
2790 #define AE_COMPILE_APSERV
2791 #define AE_COMPILE_TSORT
2792 #define AE_COMPILE_OPTGUARDAPI
2793 #define AE_COMPILE_ABLASF
2794 #define AE_COMPILE_ABLASMKL
2795 #define AE_COMPILE_ABLAS
2796 #define AE_COMPILE_CREFLECTIONS
2797 #define AE_COMPILE_HQRND
2798 #define AE_COMPILE_MATGEN
2799 #define AE_COMPILE_SPARSE
2800 #define AE_COMPILE_DLU
2801 #define AE_COMPILE_SPTRF
2802 #define AE_COMPILE_ROTATIONS
2803 #define AE_COMPILE_TRFAC
2804 #define AE_COMPILE_TRLINSOLVE
2805 #define AE_COMPILE_SAFESOLVE
2806 #define AE_COMPILE_RCOND
2807 #define AE_COMPILE_MATINV
2808 #define AE_COMPILE_HBLAS
2809 #define AE_COMPILE_SBLAS
2810 #define AE_COMPILE_ORTFAC
2811 #define AE_COMPILE_BLAS
2812 #define AE_COMPILE_BDSVD
2813 #define AE_COMPILE_SVD
2814 #define AE_COMPILE_OPTSERV
2815 #define AE_COMPILE_FBLS
2816 #define AE_COMPILE_SNNLS
2817 #define AE_COMPILE_MINLBFGS
2818 #define AE_COMPILE_CQMODELS
2819 #define AE_COMPILE_SACTIVESETS
2820 #define AE_COMPILE_MINBLEIC
2821 #define AE_COMPILE_REVISEDDUALSIMPLEX
2822 #define AE_COMPILE_NLCSLP
2823 #endif
2824 
2825 #ifdef AE_COMPILE_MINBC
2826 #define AE_PARTIAL_BUILD
2827 #define AE_COMPILE_LINMIN
2828 #define AE_COMPILE_APSERV
2829 #define AE_COMPILE_TSORT
2830 #define AE_COMPILE_OPTGUARDAPI
2831 #define AE_COMPILE_ABLASF
2832 #define AE_COMPILE_ABLASMKL
2833 #define AE_COMPILE_ABLAS
2834 #define AE_COMPILE_CREFLECTIONS
2835 #define AE_COMPILE_HQRND
2836 #define AE_COMPILE_MATGEN
2837 #define AE_COMPILE_SPARSE
2838 #define AE_COMPILE_DLU
2839 #define AE_COMPILE_SPTRF
2840 #define AE_COMPILE_ROTATIONS
2841 #define AE_COMPILE_TRFAC
2842 #define AE_COMPILE_TRLINSOLVE
2843 #define AE_COMPILE_SAFESOLVE
2844 #define AE_COMPILE_RCOND
2845 #define AE_COMPILE_MATINV
2846 #define AE_COMPILE_HBLAS
2847 #define AE_COMPILE_SBLAS
2848 #define AE_COMPILE_ORTFAC
2849 #define AE_COMPILE_BLAS
2850 #define AE_COMPILE_BDSVD
2851 #define AE_COMPILE_SVD
2852 #define AE_COMPILE_OPTSERV
2853 #endif
2854 
2855 #ifdef AE_COMPILE_MINNS
2856 #define AE_PARTIAL_BUILD
2857 #define AE_COMPILE_LINMIN
2858 #define AE_COMPILE_APSERV
2859 #define AE_COMPILE_TSORT
2860 #define AE_COMPILE_OPTGUARDAPI
2861 #define AE_COMPILE_ABLASF
2862 #define AE_COMPILE_ABLASMKL
2863 #define AE_COMPILE_ABLAS
2864 #define AE_COMPILE_CREFLECTIONS
2865 #define AE_COMPILE_HQRND
2866 #define AE_COMPILE_MATGEN
2867 #define AE_COMPILE_SPARSE
2868 #define AE_COMPILE_DLU
2869 #define AE_COMPILE_SPTRF
2870 #define AE_COMPILE_ROTATIONS
2871 #define AE_COMPILE_TRFAC
2872 #define AE_COMPILE_TRLINSOLVE
2873 #define AE_COMPILE_SAFESOLVE
2874 #define AE_COMPILE_RCOND
2875 #define AE_COMPILE_MATINV
2876 #define AE_COMPILE_HBLAS
2877 #define AE_COMPILE_SBLAS
2878 #define AE_COMPILE_ORTFAC
2879 #define AE_COMPILE_BLAS
2880 #define AE_COMPILE_BDSVD
2881 #define AE_COMPILE_SVD
2882 #define AE_COMPILE_OPTSERV
2883 #define AE_COMPILE_FBLS
2884 #define AE_COMPILE_SNNLS
2885 #define AE_COMPILE_CQMODELS
2886 #define AE_COMPILE_SACTIVESETS
2887 #define AE_COMPILE_MINBLEIC
2888 #endif
2889 
2890 #ifdef AE_COMPILE_MINCOMP
2891 #define AE_PARTIAL_BUILD
2892 #define AE_COMPILE_LINMIN
2893 #define AE_COMPILE_APSERV
2894 #define AE_COMPILE_TSORT
2895 #define AE_COMPILE_OPTGUARDAPI
2896 #define AE_COMPILE_ABLASF
2897 #define AE_COMPILE_ABLASMKL
2898 #define AE_COMPILE_ABLAS
2899 #define AE_COMPILE_CREFLECTIONS
2900 #define AE_COMPILE_HQRND
2901 #define AE_COMPILE_MATGEN
2902 #define AE_COMPILE_SPARSE
2903 #define AE_COMPILE_DLU
2904 #define AE_COMPILE_SPTRF
2905 #define AE_COMPILE_ROTATIONS
2906 #define AE_COMPILE_TRFAC
2907 #define AE_COMPILE_TRLINSOLVE
2908 #define AE_COMPILE_SAFESOLVE
2909 #define AE_COMPILE_RCOND
2910 #define AE_COMPILE_MATINV
2911 #define AE_COMPILE_HBLAS
2912 #define AE_COMPILE_SBLAS
2913 #define AE_COMPILE_ORTFAC
2914 #define AE_COMPILE_BLAS
2915 #define AE_COMPILE_BDSVD
2916 #define AE_COMPILE_SVD
2917 #define AE_COMPILE_OPTSERV
2918 #define AE_COMPILE_FBLS
2919 #define AE_COMPILE_MINLBFGS
2920 #define AE_COMPILE_CQMODELS
2921 #define AE_COMPILE_SNNLS
2922 #define AE_COMPILE_SACTIVESETS
2923 #define AE_COMPILE_MINBLEIC
2924 #endif
2925 
2926 #ifdef AE_COMPILE_MINCG
2927 #define AE_PARTIAL_BUILD
2928 #define AE_COMPILE_LINMIN
2929 #define AE_COMPILE_APSERV
2930 #define AE_COMPILE_TSORT
2931 #define AE_COMPILE_OPTGUARDAPI
2932 #define AE_COMPILE_ABLASF
2933 #define AE_COMPILE_ABLASMKL
2934 #define AE_COMPILE_ABLAS
2935 #define AE_COMPILE_CREFLECTIONS
2936 #define AE_COMPILE_HQRND
2937 #define AE_COMPILE_MATGEN
2938 #define AE_COMPILE_SPARSE
2939 #define AE_COMPILE_DLU
2940 #define AE_COMPILE_SPTRF
2941 #define AE_COMPILE_ROTATIONS
2942 #define AE_COMPILE_TRFAC
2943 #define AE_COMPILE_TRLINSOLVE
2944 #define AE_COMPILE_SAFESOLVE
2945 #define AE_COMPILE_RCOND
2946 #define AE_COMPILE_MATINV
2947 #define AE_COMPILE_HBLAS
2948 #define AE_COMPILE_SBLAS
2949 #define AE_COMPILE_ORTFAC
2950 #define AE_COMPILE_BLAS
2951 #define AE_COMPILE_BDSVD
2952 #define AE_COMPILE_SVD
2953 #define AE_COMPILE_OPTSERV
2954 #endif
2955 
2956 #ifdef AE_COMPILE_MINLM
2957 #define AE_PARTIAL_BUILD
2958 #define AE_COMPILE_APSERV
2959 #define AE_COMPILE_TSORT
2960 #define AE_COMPILE_OPTGUARDAPI
2961 #define AE_COMPILE_ABLASF
2962 #define AE_COMPILE_ABLASMKL
2963 #define AE_COMPILE_ABLAS
2964 #define AE_COMPILE_CREFLECTIONS
2965 #define AE_COMPILE_HQRND
2966 #define AE_COMPILE_MATGEN
2967 #define AE_COMPILE_SPARSE
2968 #define AE_COMPILE_DLU
2969 #define AE_COMPILE_SPTRF
2970 #define AE_COMPILE_ROTATIONS
2971 #define AE_COMPILE_TRFAC
2972 #define AE_COMPILE_TRLINSOLVE
2973 #define AE_COMPILE_SAFESOLVE
2974 #define AE_COMPILE_RCOND
2975 #define AE_COMPILE_MATINV
2976 #define AE_COMPILE_HBLAS
2977 #define AE_COMPILE_SBLAS
2978 #define AE_COMPILE_ORTFAC
2979 #define AE_COMPILE_BLAS
2980 #define AE_COMPILE_BDSVD
2981 #define AE_COMPILE_SVD
2982 #define AE_COMPILE_OPTSERV
2983 #define AE_COMPILE_XBLAS
2984 #define AE_COMPILE_DIRECTDENSESOLVERS
2985 #define AE_COMPILE_NORMESTIMATOR
2986 #define AE_COMPILE_LINLSQR
2987 #define AE_COMPILE_LINMIN
2988 #define AE_COMPILE_FBLS
2989 #define AE_COMPILE_MINLBFGS
2990 #define AE_COMPILE_CQMODELS
2991 #define AE_COMPILE_SNNLS
2992 #define AE_COMPILE_SACTIVESETS
2993 #define AE_COMPILE_QQPSOLVER
2994 #define AE_COMPILE_QPDENSEAULSOLVER
2995 #define AE_COMPILE_MINBLEIC
2996 #define AE_COMPILE_QPBLEICSOLVER
2997 #define AE_COMPILE_MINQP
2998 #endif
2999 
3000 #ifdef AE_COMPILE_HSSCHUR
3001 #define AE_PARTIAL_BUILD
3002 #define AE_COMPILE_BLAS
3003 #define AE_COMPILE_ABLASMKL
3004 #define AE_COMPILE_ROTATIONS
3005 #define AE_COMPILE_APSERV
3006 #define AE_COMPILE_ABLASF
3007 #define AE_COMPILE_ABLAS
3008 #endif
3009 
3010 #ifdef AE_COMPILE_BASICSTATOPS
3011 #define AE_PARTIAL_BUILD
3012 #define AE_COMPILE_APSERV
3013 #define AE_COMPILE_TSORT
3014 #endif
3015 
3016 #ifdef AE_COMPILE_EVD
3017 #define AE_PARTIAL_BUILD
3018 #define AE_COMPILE_APSERV
3019 #define AE_COMPILE_HQRND
3020 #define AE_COMPILE_HBLAS
3021 #define AE_COMPILE_CREFLECTIONS
3022 #define AE_COMPILE_SBLAS
3023 #define AE_COMPILE_ABLASF
3024 #define AE_COMPILE_ABLASMKL
3025 #define AE_COMPILE_ABLAS
3026 #define AE_COMPILE_ORTFAC
3027 #define AE_COMPILE_MATGEN
3028 #define AE_COMPILE_TSORT
3029 #define AE_COMPILE_SPARSE
3030 #define AE_COMPILE_BLAS
3031 #define AE_COMPILE_ROTATIONS
3032 #define AE_COMPILE_HSSCHUR
3033 #define AE_COMPILE_BASICSTATOPS
3034 #endif
3035 
3036 #ifdef AE_COMPILE_BASESTAT
3037 #define AE_PARTIAL_BUILD
3038 #define AE_COMPILE_APSERV
3039 #define AE_COMPILE_TSORT
3040 #define AE_COMPILE_BASICSTATOPS
3041 #define AE_COMPILE_ABLASF
3042 #define AE_COMPILE_ABLASMKL
3043 #define AE_COMPILE_ABLAS
3044 #endif
3045 
3046 #ifdef AE_COMPILE_PCA
3047 #define AE_PARTIAL_BUILD
3048 #define AE_COMPILE_APSERV
3049 #define AE_COMPILE_HQRND
3050 #define AE_COMPILE_HBLAS
3051 #define AE_COMPILE_CREFLECTIONS
3052 #define AE_COMPILE_SBLAS
3053 #define AE_COMPILE_ABLASF
3054 #define AE_COMPILE_ABLASMKL
3055 #define AE_COMPILE_ABLAS
3056 #define AE_COMPILE_ORTFAC
3057 #define AE_COMPILE_BLAS
3058 #define AE_COMPILE_ROTATIONS
3059 #define AE_COMPILE_BDSVD
3060 #define AE_COMPILE_SVD
3061 #define AE_COMPILE_MATGEN
3062 #define AE_COMPILE_TSORT
3063 #define AE_COMPILE_SPARSE
3064 #define AE_COMPILE_HSSCHUR
3065 #define AE_COMPILE_BASICSTATOPS
3066 #define AE_COMPILE_EVD
3067 #define AE_COMPILE_BASESTAT
3068 #endif
3069 
3070 #ifdef AE_COMPILE_BDSS
3071 #define AE_PARTIAL_BUILD
3072 #define AE_COMPILE_APSERV
3073 #define AE_COMPILE_TSORT
3074 #define AE_COMPILE_BASICSTATOPS
3075 #define AE_COMPILE_ABLASF
3076 #define AE_COMPILE_ABLASMKL
3077 #define AE_COMPILE_ABLAS
3078 #define AE_COMPILE_BASESTAT
3079 #endif
3080 
3081 #ifdef AE_COMPILE_HPCCORES
3082 #define AE_PARTIAL_BUILD
3083 #endif
3084 
3085 #ifdef AE_COMPILE_MLPBASE
3086 #define AE_PARTIAL_BUILD
3087 #define AE_COMPILE_APSERV
3088 #define AE_COMPILE_TSORT
3089 #define AE_COMPILE_BASICSTATOPS
3090 #define AE_COMPILE_ABLASF
3091 #define AE_COMPILE_ABLASMKL
3092 #define AE_COMPILE_ABLAS
3093 #define AE_COMPILE_BASESTAT
3094 #define AE_COMPILE_BDSS
3095 #define AE_COMPILE_HPCCORES
3096 #define AE_COMPILE_SCODES
3097 #define AE_COMPILE_HQRND
3098 #define AE_COMPILE_SPARSE
3099 #endif
3100 
3101 #ifdef AE_COMPILE_LDA
3102 #define AE_PARTIAL_BUILD
3103 #define AE_COMPILE_APSERV
3104 #define AE_COMPILE_HQRND
3105 #define AE_COMPILE_HBLAS
3106 #define AE_COMPILE_CREFLECTIONS
3107 #define AE_COMPILE_SBLAS
3108 #define AE_COMPILE_ABLASF
3109 #define AE_COMPILE_ABLASMKL
3110 #define AE_COMPILE_ABLAS
3111 #define AE_COMPILE_ORTFAC
3112 #define AE_COMPILE_MATGEN
3113 #define AE_COMPILE_TSORT
3114 #define AE_COMPILE_SPARSE
3115 #define AE_COMPILE_BLAS
3116 #define AE_COMPILE_ROTATIONS
3117 #define AE_COMPILE_HSSCHUR
3118 #define AE_COMPILE_BASICSTATOPS
3119 #define AE_COMPILE_EVD
3120 #define AE_COMPILE_DLU
3121 #define AE_COMPILE_SPTRF
3122 #define AE_COMPILE_TRFAC
3123 #define AE_COMPILE_TRLINSOLVE
3124 #define AE_COMPILE_SAFESOLVE
3125 #define AE_COMPILE_RCOND
3126 #define AE_COMPILE_MATINV
3127 #endif
3128 
3129 #ifdef AE_COMPILE_SSA
3130 #define AE_PARTIAL_BUILD
3131 #define AE_COMPILE_APSERV
3132 #define AE_COMPILE_HQRND
3133 #define AE_COMPILE_HBLAS
3134 #define AE_COMPILE_CREFLECTIONS
3135 #define AE_COMPILE_SBLAS
3136 #define AE_COMPILE_ABLASF
3137 #define AE_COMPILE_ABLASMKL
3138 #define AE_COMPILE_ABLAS
3139 #define AE_COMPILE_ORTFAC
3140 #define AE_COMPILE_BLAS
3141 #define AE_COMPILE_ROTATIONS
3142 #define AE_COMPILE_BDSVD
3143 #define AE_COMPILE_SVD
3144 #define AE_COMPILE_MATGEN
3145 #define AE_COMPILE_TSORT
3146 #define AE_COMPILE_SPARSE
3147 #define AE_COMPILE_HSSCHUR
3148 #define AE_COMPILE_BASICSTATOPS
3149 #define AE_COMPILE_EVD
3150 #endif
3151 
3152 #ifdef AE_COMPILE_GAMMAFUNC
3153 #define AE_PARTIAL_BUILD
3154 #endif
3155 
3156 #ifdef AE_COMPILE_NORMALDISTR
3157 #define AE_PARTIAL_BUILD
3158 #endif
3159 
3160 #ifdef AE_COMPILE_IGAMMAF
3161 #define AE_PARTIAL_BUILD
3162 #define AE_COMPILE_GAMMAFUNC
3163 #define AE_COMPILE_NORMALDISTR
3164 #endif
3165 
3166 #ifdef AE_COMPILE_LINREG
3167 #define AE_PARTIAL_BUILD
3168 #define AE_COMPILE_APSERV
3169 #define AE_COMPILE_TSORT
3170 #define AE_COMPILE_BASICSTATOPS
3171 #define AE_COMPILE_ABLASF
3172 #define AE_COMPILE_ABLASMKL
3173 #define AE_COMPILE_ABLAS
3174 #define AE_COMPILE_BASESTAT
3175 #define AE_COMPILE_GAMMAFUNC
3176 #define AE_COMPILE_NORMALDISTR
3177 #define AE_COMPILE_IGAMMAF
3178 #define AE_COMPILE_HQRND
3179 #define AE_COMPILE_HBLAS
3180 #define AE_COMPILE_CREFLECTIONS
3181 #define AE_COMPILE_SBLAS
3182 #define AE_COMPILE_ORTFAC
3183 #define AE_COMPILE_BLAS
3184 #define AE_COMPILE_ROTATIONS
3185 #define AE_COMPILE_BDSVD
3186 #define AE_COMPILE_SVD
3187 #endif
3188 
3189 #ifdef AE_COMPILE_FILTERS
3190 #define AE_PARTIAL_BUILD
3191 #define AE_COMPILE_APSERV
3192 #define AE_COMPILE_TSORT
3193 #define AE_COMPILE_BASICSTATOPS
3194 #define AE_COMPILE_ABLASF
3195 #define AE_COMPILE_ABLASMKL
3196 #define AE_COMPILE_ABLAS
3197 #define AE_COMPILE_BASESTAT
3198 #define AE_COMPILE_GAMMAFUNC
3199 #define AE_COMPILE_NORMALDISTR
3200 #define AE_COMPILE_IGAMMAF
3201 #define AE_COMPILE_HQRND
3202 #define AE_COMPILE_HBLAS
3203 #define AE_COMPILE_CREFLECTIONS
3204 #define AE_COMPILE_SBLAS
3205 #define AE_COMPILE_ORTFAC
3206 #define AE_COMPILE_BLAS
3207 #define AE_COMPILE_ROTATIONS
3208 #define AE_COMPILE_BDSVD
3209 #define AE_COMPILE_SVD
3210 #define AE_COMPILE_LINREG
3211 #endif
3212 
3213 #ifdef AE_COMPILE_LOGIT
3214 #define AE_PARTIAL_BUILD
3215 #define AE_COMPILE_APSERV
3216 #define AE_COMPILE_TSORT
3217 #define AE_COMPILE_BASICSTATOPS
3218 #define AE_COMPILE_ABLASF
3219 #define AE_COMPILE_ABLASMKL
3220 #define AE_COMPILE_ABLAS
3221 #define AE_COMPILE_BASESTAT
3222 #define AE_COMPILE_BDSS
3223 #define AE_COMPILE_HPCCORES
3224 #define AE_COMPILE_SCODES
3225 #define AE_COMPILE_HQRND
3226 #define AE_COMPILE_SPARSE
3227 #define AE_COMPILE_MLPBASE
3228 #define AE_COMPILE_HBLAS
3229 #define AE_COMPILE_CREFLECTIONS
3230 #define AE_COMPILE_SBLAS
3231 #define AE_COMPILE_ORTFAC
3232 #define AE_COMPILE_BLAS
3233 #define AE_COMPILE_ROTATIONS
3234 #define AE_COMPILE_BDSVD
3235 #define AE_COMPILE_SVD
3236 #define AE_COMPILE_DLU
3237 #define AE_COMPILE_SPTRF
3238 #define AE_COMPILE_MATGEN
3239 #define AE_COMPILE_TRFAC
3240 #define AE_COMPILE_TRLINSOLVE
3241 #define AE_COMPILE_SAFESOLVE
3242 #define AE_COMPILE_RCOND
3243 #define AE_COMPILE_XBLAS
3244 #define AE_COMPILE_DIRECTDENSESOLVERS
3245 #endif
3246 
3247 #ifdef AE_COMPILE_MCPD
3248 #define AE_PARTIAL_BUILD
3249 #define AE_COMPILE_APSERV
3250 #define AE_COMPILE_LINMIN
3251 #define AE_COMPILE_TSORT
3252 #define AE_COMPILE_OPTGUARDAPI
3253 #define AE_COMPILE_ABLASF
3254 #define AE_COMPILE_ABLASMKL
3255 #define AE_COMPILE_ABLAS
3256 #define AE_COMPILE_CREFLECTIONS
3257 #define AE_COMPILE_HQRND
3258 #define AE_COMPILE_MATGEN
3259 #define AE_COMPILE_SPARSE
3260 #define AE_COMPILE_DLU
3261 #define AE_COMPILE_SPTRF
3262 #define AE_COMPILE_ROTATIONS
3263 #define AE_COMPILE_TRFAC
3264 #define AE_COMPILE_TRLINSOLVE
3265 #define AE_COMPILE_SAFESOLVE
3266 #define AE_COMPILE_RCOND
3267 #define AE_COMPILE_MATINV
3268 #define AE_COMPILE_HBLAS
3269 #define AE_COMPILE_SBLAS
3270 #define AE_COMPILE_ORTFAC
3271 #define AE_COMPILE_BLAS
3272 #define AE_COMPILE_BDSVD
3273 #define AE_COMPILE_SVD
3274 #define AE_COMPILE_OPTSERV
3275 #define AE_COMPILE_FBLS
3276 #define AE_COMPILE_CQMODELS
3277 #define AE_COMPILE_SNNLS
3278 #define AE_COMPILE_SACTIVESETS
3279 #define AE_COMPILE_MINBLEIC
3280 #endif
3281 
3282 #ifdef AE_COMPILE_MLPE
3283 #define AE_PARTIAL_BUILD
3284 #define AE_COMPILE_APSERV
3285 #define AE_COMPILE_TSORT
3286 #define AE_COMPILE_BASICSTATOPS
3287 #define AE_COMPILE_ABLASF
3288 #define AE_COMPILE_ABLASMKL
3289 #define AE_COMPILE_ABLAS
3290 #define AE_COMPILE_BASESTAT
3291 #define AE_COMPILE_BDSS
3292 #define AE_COMPILE_HPCCORES
3293 #define AE_COMPILE_SCODES
3294 #define AE_COMPILE_HQRND
3295 #define AE_COMPILE_SPARSE
3296 #define AE_COMPILE_MLPBASE
3297 #endif
3298 
3299 #ifdef AE_COMPILE_MLPTRAIN
3300 #define AE_PARTIAL_BUILD
3301 #define AE_COMPILE_APSERV
3302 #define AE_COMPILE_TSORT
3303 #define AE_COMPILE_BASICSTATOPS
3304 #define AE_COMPILE_ABLASF
3305 #define AE_COMPILE_ABLASMKL
3306 #define AE_COMPILE_ABLAS
3307 #define AE_COMPILE_BASESTAT
3308 #define AE_COMPILE_BDSS
3309 #define AE_COMPILE_HPCCORES
3310 #define AE_COMPILE_SCODES
3311 #define AE_COMPILE_HQRND
3312 #define AE_COMPILE_SPARSE
3313 #define AE_COMPILE_MLPBASE
3314 #define AE_COMPILE_MLPE
3315 #define AE_COMPILE_DLU
3316 #define AE_COMPILE_SPTRF
3317 #define AE_COMPILE_CREFLECTIONS
3318 #define AE_COMPILE_MATGEN
3319 #define AE_COMPILE_ROTATIONS
3320 #define AE_COMPILE_TRFAC
3321 #define AE_COMPILE_TRLINSOLVE
3322 #define AE_COMPILE_SAFESOLVE
3323 #define AE_COMPILE_RCOND
3324 #define AE_COMPILE_MATINV
3325 #define AE_COMPILE_LINMIN
3326 #define AE_COMPILE_OPTGUARDAPI
3327 #define AE_COMPILE_HBLAS
3328 #define AE_COMPILE_SBLAS
3329 #define AE_COMPILE_ORTFAC
3330 #define AE_COMPILE_BLAS
3331 #define AE_COMPILE_BDSVD
3332 #define AE_COMPILE_SVD
3333 #define AE_COMPILE_OPTSERV
3334 #define AE_COMPILE_FBLS
3335 #define AE_COMPILE_MINLBFGS
3336 #define AE_COMPILE_XBLAS
3337 #define AE_COMPILE_DIRECTDENSESOLVERS
3338 #endif
3339 
3340 #ifdef AE_COMPILE_CLUSTERING
3341 #define AE_PARTIAL_BUILD
3342 #define AE_COMPILE_APSERV
3343 #define AE_COMPILE_TSORT
3344 #define AE_COMPILE_ABLASF
3345 #define AE_COMPILE_ABLASMKL
3346 #define AE_COMPILE_ABLAS
3347 #define AE_COMPILE_HQRND
3348 #define AE_COMPILE_BLAS
3349 #define AE_COMPILE_BASICSTATOPS
3350 #define AE_COMPILE_BASESTAT
3351 #endif
3352 
3353 #ifdef AE_COMPILE_DFOREST
3354 #define AE_PARTIAL_BUILD
3355 #define AE_COMPILE_APSERV
3356 #define AE_COMPILE_SCODES
3357 #define AE_COMPILE_TSORT
3358 #define AE_COMPILE_HQRND
3359 #define AE_COMPILE_BASICSTATOPS
3360 #define AE_COMPILE_ABLASF
3361 #define AE_COMPILE_ABLASMKL
3362 #define AE_COMPILE_ABLAS
3363 #define AE_COMPILE_BASESTAT
3364 #define AE_COMPILE_BDSS
3365 #endif
3366 
3367 #ifdef AE_COMPILE_KNN
3368 #define AE_PARTIAL_BUILD
3369 #define AE_COMPILE_APSERV
3370 #define AE_COMPILE_SCODES
3371 #define AE_COMPILE_TSORT
3372 #define AE_COMPILE_HQRND
3373 #define AE_COMPILE_NEARESTNEIGHBOR
3374 #define AE_COMPILE_BASICSTATOPS
3375 #define AE_COMPILE_ABLASF
3376 #define AE_COMPILE_ABLASMKL
3377 #define AE_COMPILE_ABLAS
3378 #define AE_COMPILE_BASESTAT
3379 #define AE_COMPILE_BDSS
3380 #endif
3381 
3382 #ifdef AE_COMPILE_DATACOMP
3383 #define AE_PARTIAL_BUILD
3384 #define AE_COMPILE_APSERV
3385 #define AE_COMPILE_TSORT
3386 #define AE_COMPILE_ABLASF
3387 #define AE_COMPILE_ABLASMKL
3388 #define AE_COMPILE_ABLAS
3389 #define AE_COMPILE_HQRND
3390 #define AE_COMPILE_BLAS
3391 #define AE_COMPILE_BASICSTATOPS
3392 #define AE_COMPILE_BASESTAT
3393 #define AE_COMPILE_CLUSTERING
3394 #endif
3395 
3396 #ifdef AE_COMPILE_GQ
3397 #define AE_PARTIAL_BUILD
3398 #define AE_COMPILE_APSERV
3399 #define AE_COMPILE_HQRND
3400 #define AE_COMPILE_HBLAS
3401 #define AE_COMPILE_CREFLECTIONS
3402 #define AE_COMPILE_SBLAS
3403 #define AE_COMPILE_ABLASF
3404 #define AE_COMPILE_ABLASMKL
3405 #define AE_COMPILE_ABLAS
3406 #define AE_COMPILE_ORTFAC
3407 #define AE_COMPILE_MATGEN
3408 #define AE_COMPILE_TSORT
3409 #define AE_COMPILE_SPARSE
3410 #define AE_COMPILE_BLAS
3411 #define AE_COMPILE_ROTATIONS
3412 #define AE_COMPILE_HSSCHUR
3413 #define AE_COMPILE_BASICSTATOPS
3414 #define AE_COMPILE_EVD
3415 #define AE_COMPILE_GAMMAFUNC
3416 #endif
3417 
3418 #ifdef AE_COMPILE_GKQ
3419 #define AE_PARTIAL_BUILD
3420 #define AE_COMPILE_APSERV
3421 #define AE_COMPILE_TSORT
3422 #define AE_COMPILE_HQRND
3423 #define AE_COMPILE_HBLAS
3424 #define AE_COMPILE_CREFLECTIONS
3425 #define AE_COMPILE_SBLAS
3426 #define AE_COMPILE_ABLASF
3427 #define AE_COMPILE_ABLASMKL
3428 #define AE_COMPILE_ABLAS
3429 #define AE_COMPILE_ORTFAC
3430 #define AE_COMPILE_MATGEN
3431 #define AE_COMPILE_SPARSE
3432 #define AE_COMPILE_BLAS
3433 #define AE_COMPILE_ROTATIONS
3434 #define AE_COMPILE_HSSCHUR
3435 #define AE_COMPILE_BASICSTATOPS
3436 #define AE_COMPILE_EVD
3437 #define AE_COMPILE_GAMMAFUNC
3438 #define AE_COMPILE_GQ
3439 #endif
3440 
3441 #ifdef AE_COMPILE_AUTOGK
3442 #define AE_PARTIAL_BUILD
3443 #define AE_COMPILE_APSERV
3444 #define AE_COMPILE_TSORT
3445 #define AE_COMPILE_HQRND
3446 #define AE_COMPILE_HBLAS
3447 #define AE_COMPILE_CREFLECTIONS
3448 #define AE_COMPILE_SBLAS
3449 #define AE_COMPILE_ABLASF
3450 #define AE_COMPILE_ABLASMKL
3451 #define AE_COMPILE_ABLAS
3452 #define AE_COMPILE_ORTFAC
3453 #define AE_COMPILE_MATGEN
3454 #define AE_COMPILE_SPARSE
3455 #define AE_COMPILE_BLAS
3456 #define AE_COMPILE_ROTATIONS
3457 #define AE_COMPILE_HSSCHUR
3458 #define AE_COMPILE_BASICSTATOPS
3459 #define AE_COMPILE_EVD
3460 #define AE_COMPILE_GAMMAFUNC
3461 #define AE_COMPILE_GQ
3462 #define AE_COMPILE_GKQ
3463 #endif
3464 
3465 #ifdef AE_COMPILE_NTHEORY
3466 #define AE_PARTIAL_BUILD
3467 #endif
3468 
3469 #ifdef AE_COMPILE_FTBASE
3470 #define AE_PARTIAL_BUILD
3471 #define AE_COMPILE_APSERV
3472 #define AE_COMPILE_NTHEORY
3473 #endif
3474 
3475 #ifdef AE_COMPILE_FFT
3476 #define AE_PARTIAL_BUILD
3477 #define AE_COMPILE_APSERV
3478 #define AE_COMPILE_NTHEORY
3479 #define AE_COMPILE_FTBASE
3480 #endif
3481 
3482 #ifdef AE_COMPILE_FHT
3483 #define AE_PARTIAL_BUILD
3484 #define AE_COMPILE_APSERV
3485 #define AE_COMPILE_NTHEORY
3486 #define AE_COMPILE_FTBASE
3487 #define AE_COMPILE_FFT
3488 #endif
3489 
3490 #ifdef AE_COMPILE_CONV
3491 #define AE_PARTIAL_BUILD
3492 #define AE_COMPILE_APSERV
3493 #define AE_COMPILE_NTHEORY
3494 #define AE_COMPILE_FTBASE
3495 #define AE_COMPILE_FFT
3496 #endif
3497 
3498 #ifdef AE_COMPILE_CORR
3499 #define AE_PARTIAL_BUILD
3500 #define AE_COMPILE_APSERV
3501 #define AE_COMPILE_NTHEORY
3502 #define AE_COMPILE_FTBASE
3503 #define AE_COMPILE_FFT
3504 #define AE_COMPILE_CONV
3505 #endif
3506 
3507 #ifdef AE_COMPILE_IDW
3508 #define AE_PARTIAL_BUILD
3509 #define AE_COMPILE_SCODES
3510 #define AE_COMPILE_APSERV
3511 #define AE_COMPILE_TSORT
3512 #define AE_COMPILE_NEARESTNEIGHBOR
3513 #define AE_COMPILE_HQRND
3514 #define AE_COMPILE_ABLASF
3515 #define AE_COMPILE_ABLASMKL
3516 #define AE_COMPILE_ABLAS
3517 #endif
3518 
3519 #ifdef AE_COMPILE_RATINT
3520 #define AE_PARTIAL_BUILD
3521 #define AE_COMPILE_APSERV
3522 #define AE_COMPILE_TSORT
3523 #endif
3524 
3525 #ifdef AE_COMPILE_FITSPHERE
3526 #define AE_PARTIAL_BUILD
3527 #define AE_COMPILE_LINMIN
3528 #define AE_COMPILE_APSERV
3529 #define AE_COMPILE_TSORT
3530 #define AE_COMPILE_OPTGUARDAPI
3531 #define AE_COMPILE_ABLASF
3532 #define AE_COMPILE_ABLASMKL
3533 #define AE_COMPILE_ABLAS
3534 #define AE_COMPILE_CREFLECTIONS
3535 #define AE_COMPILE_HQRND
3536 #define AE_COMPILE_MATGEN
3537 #define AE_COMPILE_SPARSE
3538 #define AE_COMPILE_DLU
3539 #define AE_COMPILE_SPTRF
3540 #define AE_COMPILE_ROTATIONS
3541 #define AE_COMPILE_TRFAC
3542 #define AE_COMPILE_TRLINSOLVE
3543 #define AE_COMPILE_SAFESOLVE
3544 #define AE_COMPILE_RCOND
3545 #define AE_COMPILE_MATINV
3546 #define AE_COMPILE_HBLAS
3547 #define AE_COMPILE_SBLAS
3548 #define AE_COMPILE_ORTFAC
3549 #define AE_COMPILE_BLAS
3550 #define AE_COMPILE_BDSVD
3551 #define AE_COMPILE_SVD
3552 #define AE_COMPILE_OPTSERV
3553 #define AE_COMPILE_FBLS
3554 #define AE_COMPILE_CQMODELS
3555 #define AE_COMPILE_SNNLS
3556 #define AE_COMPILE_SACTIVESETS
3557 #define AE_COMPILE_MINBLEIC
3558 #define AE_COMPILE_XBLAS
3559 #define AE_COMPILE_DIRECTDENSESOLVERS
3560 #define AE_COMPILE_NORMESTIMATOR
3561 #define AE_COMPILE_LINLSQR
3562 #define AE_COMPILE_MINLBFGS
3563 #define AE_COMPILE_QQPSOLVER
3564 #define AE_COMPILE_QPDENSEAULSOLVER
3565 #define AE_COMPILE_QPBLEICSOLVER
3566 #define AE_COMPILE_MINQP
3567 #define AE_COMPILE_MINLM
3568 #define AE_COMPILE_REVISEDDUALSIMPLEX
3569 #define AE_COMPILE_NLCSLP
3570 #define AE_COMPILE_MINNLC
3571 #endif
3572 
3573 #ifdef AE_COMPILE_INTFITSERV
3574 #define AE_PARTIAL_BUILD
3575 #define AE_COMPILE_APSERV
3576 #define AE_COMPILE_ABLASF
3577 #define AE_COMPILE_ABLASMKL
3578 #define AE_COMPILE_ABLAS
3579 #define AE_COMPILE_HQRND
3580 #define AE_COMPILE_TSORT
3581 #define AE_COMPILE_SPARSE
3582 #define AE_COMPILE_DLU
3583 #define AE_COMPILE_SPTRF
3584 #define AE_COMPILE_CREFLECTIONS
3585 #define AE_COMPILE_MATGEN
3586 #define AE_COMPILE_ROTATIONS
3587 #define AE_COMPILE_TRFAC
3588 #endif
3589 
3590 #ifdef AE_COMPILE_SPLINE1D
3591 #define AE_PARTIAL_BUILD
3592 #define AE_COMPILE_APSERV
3593 #define AE_COMPILE_TSORT
3594 #define AE_COMPILE_ABLASF
3595 #define AE_COMPILE_ABLASMKL
3596 #define AE_COMPILE_ABLAS
3597 #define AE_COMPILE_HQRND
3598 #define AE_COMPILE_SPARSE
3599 #define AE_COMPILE_DLU
3600 #define AE_COMPILE_SPTRF
3601 #define AE_COMPILE_CREFLECTIONS
3602 #define AE_COMPILE_MATGEN
3603 #define AE_COMPILE_ROTATIONS
3604 #define AE_COMPILE_TRFAC
3605 #define AE_COMPILE_INTFITSERV
3606 #define AE_COMPILE_HBLAS
3607 #define AE_COMPILE_SBLAS
3608 #define AE_COMPILE_ORTFAC
3609 #define AE_COMPILE_FBLS
3610 #endif
3611 
3612 #ifdef AE_COMPILE_PARAMETRIC
3613 #define AE_PARTIAL_BUILD
3614 #define AE_COMPILE_APSERV
3615 #define AE_COMPILE_HQRND
3616 #define AE_COMPILE_TSORT
3617 #define AE_COMPILE_ABLASF
3618 #define AE_COMPILE_ABLASMKL
3619 #define AE_COMPILE_ABLAS
3620 #define AE_COMPILE_SPARSE
3621 #define AE_COMPILE_DLU
3622 #define AE_COMPILE_SPTRF
3623 #define AE_COMPILE_CREFLECTIONS
3624 #define AE_COMPILE_MATGEN
3625 #define AE_COMPILE_ROTATIONS
3626 #define AE_COMPILE_TRFAC
3627 #define AE_COMPILE_INTFITSERV
3628 #define AE_COMPILE_HBLAS
3629 #define AE_COMPILE_SBLAS
3630 #define AE_COMPILE_ORTFAC
3631 #define AE_COMPILE_FBLS
3632 #define AE_COMPILE_SPLINE1D
3633 #define AE_COMPILE_BLAS
3634 #define AE_COMPILE_HSSCHUR
3635 #define AE_COMPILE_BASICSTATOPS
3636 #define AE_COMPILE_EVD
3637 #define AE_COMPILE_GAMMAFUNC
3638 #define AE_COMPILE_GQ
3639 #define AE_COMPILE_GKQ
3640 #define AE_COMPILE_AUTOGK
3641 #endif
3642 
3643 #ifdef AE_COMPILE_SPLINE3D
3644 #define AE_PARTIAL_BUILD
3645 #define AE_COMPILE_APSERV
3646 #define AE_COMPILE_TSORT
3647 #define AE_COMPILE_ABLASF
3648 #define AE_COMPILE_ABLASMKL
3649 #define AE_COMPILE_ABLAS
3650 #define AE_COMPILE_HQRND
3651 #define AE_COMPILE_SPARSE
3652 #define AE_COMPILE_DLU
3653 #define AE_COMPILE_SPTRF
3654 #define AE_COMPILE_CREFLECTIONS
3655 #define AE_COMPILE_MATGEN
3656 #define AE_COMPILE_ROTATIONS
3657 #define AE_COMPILE_TRFAC
3658 #define AE_COMPILE_INTFITSERV
3659 #define AE_COMPILE_HBLAS
3660 #define AE_COMPILE_SBLAS
3661 #define AE_COMPILE_ORTFAC
3662 #define AE_COMPILE_FBLS
3663 #define AE_COMPILE_SPLINE1D
3664 #endif
3665 
3666 #ifdef AE_COMPILE_POLINT
3667 #define AE_PARTIAL_BUILD
3668 #define AE_COMPILE_APSERV
3669 #define AE_COMPILE_TSORT
3670 #define AE_COMPILE_RATINT
3671 #endif
3672 
3673 #ifdef AE_COMPILE_LSFIT
3674 #define AE_PARTIAL_BUILD
3675 #define AE_COMPILE_APSERV
3676 #define AE_COMPILE_ABLASF
3677 #define AE_COMPILE_ABLASMKL
3678 #define AE_COMPILE_ABLAS
3679 #define AE_COMPILE_HQRND
3680 #define AE_COMPILE_TSORT
3681 #define AE_COMPILE_SPARSE
3682 #define AE_COMPILE_DLU
3683 #define AE_COMPILE_SPTRF
3684 #define AE_COMPILE_CREFLECTIONS
3685 #define AE_COMPILE_MATGEN
3686 #define AE_COMPILE_ROTATIONS
3687 #define AE_COMPILE_TRFAC
3688 #define AE_COMPILE_INTFITSERV
3689 #define AE_COMPILE_RATINT
3690 #define AE_COMPILE_POLINT
3691 #define AE_COMPILE_HBLAS
3692 #define AE_COMPILE_SBLAS
3693 #define AE_COMPILE_ORTFAC
3694 #define AE_COMPILE_FBLS
3695 #define AE_COMPILE_SPLINE1D
3696 #define AE_COMPILE_OPTGUARDAPI
3697 #define AE_COMPILE_TRLINSOLVE
3698 #define AE_COMPILE_SAFESOLVE
3699 #define AE_COMPILE_RCOND
3700 #define AE_COMPILE_MATINV
3701 #define AE_COMPILE_BLAS
3702 #define AE_COMPILE_BDSVD
3703 #define AE_COMPILE_SVD
3704 #define AE_COMPILE_OPTSERV
3705 #define AE_COMPILE_XBLAS
3706 #define AE_COMPILE_DIRECTDENSESOLVERS
3707 #define AE_COMPILE_NORMESTIMATOR
3708 #define AE_COMPILE_LINLSQR
3709 #define AE_COMPILE_LINMIN
3710 #define AE_COMPILE_MINLBFGS
3711 #define AE_COMPILE_CQMODELS
3712 #define AE_COMPILE_SNNLS
3713 #define AE_COMPILE_SACTIVESETS
3714 #define AE_COMPILE_QQPSOLVER
3715 #define AE_COMPILE_QPDENSEAULSOLVER
3716 #define AE_COMPILE_MINBLEIC
3717 #define AE_COMPILE_QPBLEICSOLVER
3718 #define AE_COMPILE_MINQP
3719 #define AE_COMPILE_MINLM
3720 #endif
3721 
3722 #ifdef AE_COMPILE_RBFV2
3723 #define AE_PARTIAL_BUILD
3724 #define AE_COMPILE_SCODES
3725 #define AE_COMPILE_APSERV
3726 #define AE_COMPILE_TSORT
3727 #define AE_COMPILE_NEARESTNEIGHBOR
3728 #define AE_COMPILE_ABLASF
3729 #define AE_COMPILE_ABLASMKL
3730 #define AE_COMPILE_ABLAS
3731 #define AE_COMPILE_HQRND
3732 #define AE_COMPILE_SPARSE
3733 #define AE_COMPILE_DLU
3734 #define AE_COMPILE_SPTRF
3735 #define AE_COMPILE_CREFLECTIONS
3736 #define AE_COMPILE_MATGEN
3737 #define AE_COMPILE_ROTATIONS
3738 #define AE_COMPILE_TRFAC
3739 #define AE_COMPILE_INTFITSERV
3740 #define AE_COMPILE_RATINT
3741 #define AE_COMPILE_POLINT
3742 #define AE_COMPILE_HBLAS
3743 #define AE_COMPILE_SBLAS
3744 #define AE_COMPILE_ORTFAC
3745 #define AE_COMPILE_FBLS
3746 #define AE_COMPILE_SPLINE1D
3747 #define AE_COMPILE_OPTGUARDAPI
3748 #define AE_COMPILE_TRLINSOLVE
3749 #define AE_COMPILE_SAFESOLVE
3750 #define AE_COMPILE_RCOND
3751 #define AE_COMPILE_MATINV
3752 #define AE_COMPILE_BLAS
3753 #define AE_COMPILE_BDSVD
3754 #define AE_COMPILE_SVD
3755 #define AE_COMPILE_OPTSERV
3756 #define AE_COMPILE_XBLAS
3757 #define AE_COMPILE_DIRECTDENSESOLVERS
3758 #define AE_COMPILE_NORMESTIMATOR
3759 #define AE_COMPILE_LINLSQR
3760 #define AE_COMPILE_LINMIN
3761 #define AE_COMPILE_MINLBFGS
3762 #define AE_COMPILE_CQMODELS
3763 #define AE_COMPILE_SNNLS
3764 #define AE_COMPILE_SACTIVESETS
3765 #define AE_COMPILE_QQPSOLVER
3766 #define AE_COMPILE_QPDENSEAULSOLVER
3767 #define AE_COMPILE_MINBLEIC
3768 #define AE_COMPILE_QPBLEICSOLVER
3769 #define AE_COMPILE_MINQP
3770 #define AE_COMPILE_MINLM
3771 #define AE_COMPILE_LSFIT
3772 #endif
3773 
3774 #ifdef AE_COMPILE_SPLINE2D
3775 #define AE_PARTIAL_BUILD
3776 #define AE_COMPILE_APSERV
3777 #define AE_COMPILE_SCODES
3778 #define AE_COMPILE_ABLASF
3779 #define AE_COMPILE_ABLASMKL
3780 #define AE_COMPILE_ABLAS
3781 #define AE_COMPILE_HQRND
3782 #define AE_COMPILE_TSORT
3783 #define AE_COMPILE_SPARSE
3784 #define AE_COMPILE_DLU
3785 #define AE_COMPILE_SPTRF
3786 #define AE_COMPILE_CREFLECTIONS
3787 #define AE_COMPILE_MATGEN
3788 #define AE_COMPILE_ROTATIONS
3789 #define AE_COMPILE_TRFAC
3790 #define AE_COMPILE_INTFITSERV
3791 #define AE_COMPILE_NORMESTIMATOR
3792 #define AE_COMPILE_HBLAS
3793 #define AE_COMPILE_SBLAS
3794 #define AE_COMPILE_ORTFAC
3795 #define AE_COMPILE_BLAS
3796 #define AE_COMPILE_BDSVD
3797 #define AE_COMPILE_SVD
3798 #define AE_COMPILE_LINLSQR
3799 #define AE_COMPILE_FBLS
3800 #define AE_COMPILE_SPLINE1D
3801 #endif
3802 
3803 #ifdef AE_COMPILE_RBFV1
3804 #define AE_PARTIAL_BUILD
3805 #define AE_COMPILE_SCODES
3806 #define AE_COMPILE_APSERV
3807 #define AE_COMPILE_TSORT
3808 #define AE_COMPILE_NEARESTNEIGHBOR
3809 #define AE_COMPILE_ABLASF
3810 #define AE_COMPILE_ABLASMKL
3811 #define AE_COMPILE_ABLAS
3812 #define AE_COMPILE_HQRND
3813 #define AE_COMPILE_SPARSE
3814 #define AE_COMPILE_DLU
3815 #define AE_COMPILE_SPTRF
3816 #define AE_COMPILE_CREFLECTIONS
3817 #define AE_COMPILE_MATGEN
3818 #define AE_COMPILE_ROTATIONS
3819 #define AE_COMPILE_TRFAC
3820 #define AE_COMPILE_INTFITSERV
3821 #define AE_COMPILE_RATINT
3822 #define AE_COMPILE_POLINT
3823 #define AE_COMPILE_HBLAS
3824 #define AE_COMPILE_SBLAS
3825 #define AE_COMPILE_ORTFAC
3826 #define AE_COMPILE_FBLS
3827 #define AE_COMPILE_SPLINE1D
3828 #define AE_COMPILE_OPTGUARDAPI
3829 #define AE_COMPILE_TRLINSOLVE
3830 #define AE_COMPILE_SAFESOLVE
3831 #define AE_COMPILE_RCOND
3832 #define AE_COMPILE_MATINV
3833 #define AE_COMPILE_BLAS
3834 #define AE_COMPILE_BDSVD
3835 #define AE_COMPILE_SVD
3836 #define AE_COMPILE_OPTSERV
3837 #define AE_COMPILE_XBLAS
3838 #define AE_COMPILE_DIRECTDENSESOLVERS
3839 #define AE_COMPILE_NORMESTIMATOR
3840 #define AE_COMPILE_LINLSQR
3841 #define AE_COMPILE_LINMIN
3842 #define AE_COMPILE_MINLBFGS
3843 #define AE_COMPILE_CQMODELS
3844 #define AE_COMPILE_SNNLS
3845 #define AE_COMPILE_SACTIVESETS
3846 #define AE_COMPILE_QQPSOLVER
3847 #define AE_COMPILE_QPDENSEAULSOLVER
3848 #define AE_COMPILE_MINBLEIC
3849 #define AE_COMPILE_QPBLEICSOLVER
3850 #define AE_COMPILE_MINQP
3851 #define AE_COMPILE_MINLM
3852 #define AE_COMPILE_LSFIT
3853 #endif
3854 
3855 #ifdef AE_COMPILE_RBF
3856 #define AE_PARTIAL_BUILD
3857 #define AE_COMPILE_SCODES
3858 #define AE_COMPILE_APSERV
3859 #define AE_COMPILE_TSORT
3860 #define AE_COMPILE_NEARESTNEIGHBOR
3861 #define AE_COMPILE_ABLASF
3862 #define AE_COMPILE_ABLASMKL
3863 #define AE_COMPILE_ABLAS
3864 #define AE_COMPILE_HQRND
3865 #define AE_COMPILE_SPARSE
3866 #define AE_COMPILE_DLU
3867 #define AE_COMPILE_SPTRF
3868 #define AE_COMPILE_CREFLECTIONS
3869 #define AE_COMPILE_MATGEN
3870 #define AE_COMPILE_ROTATIONS
3871 #define AE_COMPILE_TRFAC
3872 #define AE_COMPILE_INTFITSERV
3873 #define AE_COMPILE_RATINT
3874 #define AE_COMPILE_POLINT
3875 #define AE_COMPILE_HBLAS
3876 #define AE_COMPILE_SBLAS
3877 #define AE_COMPILE_ORTFAC
3878 #define AE_COMPILE_FBLS
3879 #define AE_COMPILE_SPLINE1D
3880 #define AE_COMPILE_OPTGUARDAPI
3881 #define AE_COMPILE_TRLINSOLVE
3882 #define AE_COMPILE_SAFESOLVE
3883 #define AE_COMPILE_RCOND
3884 #define AE_COMPILE_MATINV
3885 #define AE_COMPILE_BLAS
3886 #define AE_COMPILE_BDSVD
3887 #define AE_COMPILE_SVD
3888 #define AE_COMPILE_OPTSERV
3889 #define AE_COMPILE_XBLAS
3890 #define AE_COMPILE_DIRECTDENSESOLVERS
3891 #define AE_COMPILE_NORMESTIMATOR
3892 #define AE_COMPILE_LINLSQR
3893 #define AE_COMPILE_LINMIN
3894 #define AE_COMPILE_MINLBFGS
3895 #define AE_COMPILE_CQMODELS
3896 #define AE_COMPILE_SNNLS
3897 #define AE_COMPILE_SACTIVESETS
3898 #define AE_COMPILE_QQPSOLVER
3899 #define AE_COMPILE_QPDENSEAULSOLVER
3900 #define AE_COMPILE_MINBLEIC
3901 #define AE_COMPILE_QPBLEICSOLVER
3902 #define AE_COMPILE_MINQP
3903 #define AE_COMPILE_MINLM
3904 #define AE_COMPILE_LSFIT
3905 #define AE_COMPILE_RBFV1
3906 #define AE_COMPILE_RBFV2
3907 #endif
3908 
3909 #ifdef AE_COMPILE_INTCOMP
3910 #define AE_PARTIAL_BUILD
3911 #define AE_COMPILE_LINMIN
3912 #define AE_COMPILE_APSERV
3913 #define AE_COMPILE_TSORT
3914 #define AE_COMPILE_OPTGUARDAPI
3915 #define AE_COMPILE_ABLASF
3916 #define AE_COMPILE_ABLASMKL
3917 #define AE_COMPILE_ABLAS
3918 #define AE_COMPILE_CREFLECTIONS
3919 #define AE_COMPILE_HQRND
3920 #define AE_COMPILE_MATGEN
3921 #define AE_COMPILE_SPARSE
3922 #define AE_COMPILE_DLU
3923 #define AE_COMPILE_SPTRF
3924 #define AE_COMPILE_ROTATIONS
3925 #define AE_COMPILE_TRFAC
3926 #define AE_COMPILE_TRLINSOLVE
3927 #define AE_COMPILE_SAFESOLVE
3928 #define AE_COMPILE_RCOND
3929 #define AE_COMPILE_MATINV
3930 #define AE_COMPILE_HBLAS
3931 #define AE_COMPILE_SBLAS
3932 #define AE_COMPILE_ORTFAC
3933 #define AE_COMPILE_BLAS
3934 #define AE_COMPILE_BDSVD
3935 #define AE_COMPILE_SVD
3936 #define AE_COMPILE_OPTSERV
3937 #define AE_COMPILE_FBLS
3938 #define AE_COMPILE_CQMODELS
3939 #define AE_COMPILE_SNNLS
3940 #define AE_COMPILE_SACTIVESETS
3941 #define AE_COMPILE_MINBLEIC
3942 #define AE_COMPILE_XBLAS
3943 #define AE_COMPILE_DIRECTDENSESOLVERS
3944 #define AE_COMPILE_NORMESTIMATOR
3945 #define AE_COMPILE_LINLSQR
3946 #define AE_COMPILE_MINLBFGS
3947 #define AE_COMPILE_QQPSOLVER
3948 #define AE_COMPILE_QPDENSEAULSOLVER
3949 #define AE_COMPILE_QPBLEICSOLVER
3950 #define AE_COMPILE_MINQP
3951 #define AE_COMPILE_MINLM
3952 #define AE_COMPILE_REVISEDDUALSIMPLEX
3953 #define AE_COMPILE_NLCSLP
3954 #define AE_COMPILE_MINNLC
3955 #define AE_COMPILE_FITSPHERE
3956 #endif
3957 
3958 #ifdef AE_COMPILE_ELLIPTIC
3959 #define AE_PARTIAL_BUILD
3960 #endif
3961 
3962 #ifdef AE_COMPILE_HERMITE
3963 #define AE_PARTIAL_BUILD
3964 #endif
3965 
3966 #ifdef AE_COMPILE_DAWSON
3967 #define AE_PARTIAL_BUILD
3968 #endif
3969 
3970 #ifdef AE_COMPILE_TRIGINTEGRALS
3971 #define AE_PARTIAL_BUILD
3972 #endif
3973 
3974 #ifdef AE_COMPILE_POISSONDISTR
3975 #define AE_PARTIAL_BUILD
3976 #define AE_COMPILE_GAMMAFUNC
3977 #define AE_COMPILE_NORMALDISTR
3978 #define AE_COMPILE_IGAMMAF
3979 #endif
3980 
3981 #ifdef AE_COMPILE_BESSEL
3982 #define AE_PARTIAL_BUILD
3983 #endif
3984 
3985 #ifdef AE_COMPILE_IBETAF
3986 #define AE_PARTIAL_BUILD
3987 #define AE_COMPILE_GAMMAFUNC
3988 #define AE_COMPILE_NORMALDISTR
3989 #endif
3990 
3991 #ifdef AE_COMPILE_FDISTR
3992 #define AE_PARTIAL_BUILD
3993 #define AE_COMPILE_GAMMAFUNC
3994 #define AE_COMPILE_NORMALDISTR
3995 #define AE_COMPILE_IBETAF
3996 #endif
3997 
3998 #ifdef AE_COMPILE_FRESNEL
3999 #define AE_PARTIAL_BUILD
4000 #endif
4001 
4002 #ifdef AE_COMPILE_JACOBIANELLIPTIC
4003 #define AE_PARTIAL_BUILD
4004 #endif
4005 
4006 #ifdef AE_COMPILE_PSIF
4007 #define AE_PARTIAL_BUILD
4008 #endif
4009 
4010 #ifdef AE_COMPILE_EXPINTEGRALS
4011 #define AE_PARTIAL_BUILD
4012 #endif
4013 
4014 #ifdef AE_COMPILE_LAGUERRE
4015 #define AE_PARTIAL_BUILD
4016 #endif
4017 
4018 #ifdef AE_COMPILE_CHISQUAREDISTR
4019 #define AE_PARTIAL_BUILD
4020 #define AE_COMPILE_GAMMAFUNC
4021 #define AE_COMPILE_NORMALDISTR
4022 #define AE_COMPILE_IGAMMAF
4023 #endif
4024 
4025 #ifdef AE_COMPILE_LEGENDRE
4026 #define AE_PARTIAL_BUILD
4027 #endif
4028 
4029 #ifdef AE_COMPILE_BETAF
4030 #define AE_PARTIAL_BUILD
4031 #define AE_COMPILE_GAMMAFUNC
4032 #endif
4033 
4034 #ifdef AE_COMPILE_CHEBYSHEV
4035 #define AE_PARTIAL_BUILD
4036 #endif
4037 
4038 #ifdef AE_COMPILE_STUDENTTDISTR
4039 #define AE_PARTIAL_BUILD
4040 #define AE_COMPILE_GAMMAFUNC
4041 #define AE_COMPILE_NORMALDISTR
4042 #define AE_COMPILE_IBETAF
4043 #endif
4044 
4045 #ifdef AE_COMPILE_NEARUNITYUNIT
4046 #define AE_PARTIAL_BUILD
4047 #endif
4048 
4049 #ifdef AE_COMPILE_BINOMIALDISTR
4050 #define AE_PARTIAL_BUILD
4051 #define AE_COMPILE_GAMMAFUNC
4052 #define AE_COMPILE_NORMALDISTR
4053 #define AE_COMPILE_IBETAF
4054 #define AE_COMPILE_NEARUNITYUNIT
4055 #endif
4056 
4057 #ifdef AE_COMPILE_AIRYF
4058 #define AE_PARTIAL_BUILD
4059 #endif
4060 
4061 #ifdef AE_COMPILE_WSR
4062 #define AE_PARTIAL_BUILD
4063 #define AE_COMPILE_APSERV
4064 #endif
4065 
4066 #ifdef AE_COMPILE_STEST
4067 #define AE_PARTIAL_BUILD
4068 #define AE_COMPILE_GAMMAFUNC
4069 #define AE_COMPILE_NORMALDISTR
4070 #define AE_COMPILE_IBETAF
4071 #define AE_COMPILE_NEARUNITYUNIT
4072 #define AE_COMPILE_BINOMIALDISTR
4073 #endif
4074 
4075 #ifdef AE_COMPILE_CORRELATIONTESTS
4076 #define AE_PARTIAL_BUILD
4077 #define AE_COMPILE_GAMMAFUNC
4078 #define AE_COMPILE_NORMALDISTR
4079 #define AE_COMPILE_IBETAF
4080 #define AE_COMPILE_STUDENTTDISTR
4081 #define AE_COMPILE_APSERV
4082 #define AE_COMPILE_TSORT
4083 #define AE_COMPILE_BASICSTATOPS
4084 #define AE_COMPILE_ABLASF
4085 #define AE_COMPILE_ABLASMKL
4086 #define AE_COMPILE_ABLAS
4087 #define AE_COMPILE_BASESTAT
4088 #endif
4089 
4090 #ifdef AE_COMPILE_STUDENTTTESTS
4091 #define AE_PARTIAL_BUILD
4092 #define AE_COMPILE_APSERV
4093 #define AE_COMPILE_GAMMAFUNC
4094 #define AE_COMPILE_NORMALDISTR
4095 #define AE_COMPILE_IBETAF
4096 #define AE_COMPILE_STUDENTTDISTR
4097 #endif
4098 
4099 #ifdef AE_COMPILE_MANNWHITNEYU
4100 #define AE_PARTIAL_BUILD
4101 #define AE_COMPILE_APSERV
4102 #define AE_COMPILE_HQRND
4103 #endif
4104 
4105 #ifdef AE_COMPILE_JARQUEBERA
4106 #define AE_PARTIAL_BUILD
4107 #endif
4108 
4109 #ifdef AE_COMPILE_VARIANCETESTS
4110 #define AE_PARTIAL_BUILD
4111 #define AE_COMPILE_GAMMAFUNC
4112 #define AE_COMPILE_NORMALDISTR
4113 #define AE_COMPILE_IBETAF
4114 #define AE_COMPILE_FDISTR
4115 #define AE_COMPILE_IGAMMAF
4116 #define AE_COMPILE_CHISQUAREDISTR
4117 #endif
4118 
4119 #ifdef AE_COMPILE_SCHUR
4120 #define AE_PARTIAL_BUILD
4121 #define AE_COMPILE_APSERV
4122 #define AE_COMPILE_HQRND
4123 #define AE_COMPILE_HBLAS
4124 #define AE_COMPILE_CREFLECTIONS
4125 #define AE_COMPILE_SBLAS
4126 #define AE_COMPILE_ABLASF
4127 #define AE_COMPILE_ABLASMKL
4128 #define AE_COMPILE_ABLAS
4129 #define AE_COMPILE_ORTFAC
4130 #define AE_COMPILE_BLAS
4131 #define AE_COMPILE_ROTATIONS
4132 #define AE_COMPILE_HSSCHUR
4133 #endif
4134 
4135 #ifdef AE_COMPILE_SPDGEVD
4136 #define AE_PARTIAL_BUILD
4137 #define AE_COMPILE_APSERV
4138 #define AE_COMPILE_ABLASF
4139 #define AE_COMPILE_ABLASMKL
4140 #define AE_COMPILE_ABLAS
4141 #define AE_COMPILE_HQRND
4142 #define AE_COMPILE_TSORT
4143 #define AE_COMPILE_SPARSE
4144 #define AE_COMPILE_DLU
4145 #define AE_COMPILE_SPTRF
4146 #define AE_COMPILE_CREFLECTIONS
4147 #define AE_COMPILE_MATGEN
4148 #define AE_COMPILE_ROTATIONS
4149 #define AE_COMPILE_TRFAC
4150 #define AE_COMPILE_SBLAS
4151 #define AE_COMPILE_BLAS
4152 #define AE_COMPILE_TRLINSOLVE
4153 #define AE_COMPILE_SAFESOLVE
4154 #define AE_COMPILE_RCOND
4155 #define AE_COMPILE_MATINV
4156 #define AE_COMPILE_HBLAS
4157 #define AE_COMPILE_ORTFAC
4158 #define AE_COMPILE_HSSCHUR
4159 #define AE_COMPILE_BASICSTATOPS
4160 #define AE_COMPILE_EVD
4161 #endif
4162 
4163 #ifdef AE_COMPILE_INVERSEUPDATE
4164 #define AE_PARTIAL_BUILD
4165 #endif
4166 
4167 #ifdef AE_COMPILE_MATDET
4168 #define AE_PARTIAL_BUILD
4169 #define AE_COMPILE_APSERV
4170 #define AE_COMPILE_ABLASF
4171 #define AE_COMPILE_ABLASMKL
4172 #define AE_COMPILE_ABLAS
4173 #define AE_COMPILE_HQRND
4174 #define AE_COMPILE_TSORT
4175 #define AE_COMPILE_SPARSE
4176 #define AE_COMPILE_DLU
4177 #define AE_COMPILE_SPTRF
4178 #define AE_COMPILE_CREFLECTIONS
4179 #define AE_COMPILE_MATGEN
4180 #define AE_COMPILE_ROTATIONS
4181 #define AE_COMPILE_TRFAC
4182 #endif
4183 
4184 #ifdef AE_COMPILE_POLYNOMIALSOLVER
4185 #define AE_PARTIAL_BUILD
4186 #define AE_COMPILE_APSERV
4187 #define AE_COMPILE_HQRND
4188 #define AE_COMPILE_HBLAS
4189 #define AE_COMPILE_CREFLECTIONS
4190 #define AE_COMPILE_SBLAS
4191 #define AE_COMPILE_ABLASF
4192 #define AE_COMPILE_ABLASMKL
4193 #define AE_COMPILE_ABLAS
4194 #define AE_COMPILE_ORTFAC
4195 #define AE_COMPILE_MATGEN
4196 #define AE_COMPILE_TSORT
4197 #define AE_COMPILE_SPARSE
4198 #define AE_COMPILE_BLAS
4199 #define AE_COMPILE_ROTATIONS
4200 #define AE_COMPILE_HSSCHUR
4201 #define AE_COMPILE_BASICSTATOPS
4202 #define AE_COMPILE_EVD
4203 #define AE_COMPILE_DLU
4204 #define AE_COMPILE_SPTRF
4205 #define AE_COMPILE_TRFAC
4206 #endif
4207 
4208 #ifdef AE_COMPILE_NLEQ
4209 #define AE_PARTIAL_BUILD
4210 #define AE_COMPILE_APSERV
4211 #define AE_COMPILE_LINMIN
4212 #define AE_COMPILE_ABLASF
4213 #define AE_COMPILE_ABLASMKL
4214 #define AE_COMPILE_ABLAS
4215 #define AE_COMPILE_HQRND
4216 #define AE_COMPILE_HBLAS
4217 #define AE_COMPILE_CREFLECTIONS
4218 #define AE_COMPILE_SBLAS
4219 #define AE_COMPILE_ORTFAC
4220 #define AE_COMPILE_FBLS
4221 #endif
4222 
4223 #ifdef AE_COMPILE_DIRECTSPARSESOLVERS
4224 #define AE_PARTIAL_BUILD
4225 #define AE_COMPILE_APSERV
4226 #define AE_COMPILE_ABLASMKL
4227 #define AE_COMPILE_HQRND
4228 #define AE_COMPILE_TSORT
4229 #define AE_COMPILE_SPARSE
4230 #define AE_COMPILE_ABLASF
4231 #define AE_COMPILE_ABLAS
4232 #define AE_COMPILE_DLU
4233 #define AE_COMPILE_SPTRF
4234 #define AE_COMPILE_CREFLECTIONS
4235 #define AE_COMPILE_MATGEN
4236 #define AE_COMPILE_ROTATIONS
4237 #define AE_COMPILE_TRFAC
4238 #endif
4239 
4240 #ifdef AE_COMPILE_LINCG
4241 #define AE_PARTIAL_BUILD
4242 #define AE_COMPILE_APSERV
4243 #define AE_COMPILE_ABLASMKL
4244 #define AE_COMPILE_HQRND
4245 #define AE_COMPILE_TSORT
4246 #define AE_COMPILE_SPARSE
4247 #define AE_COMPILE_ABLASF
4248 #define AE_COMPILE_ABLAS
4249 #define AE_COMPILE_CREFLECTIONS
4250 #define AE_COMPILE_MATGEN
4251 #endif
4252 
4253 #ifdef AE_COMPILE_ALGLIBBASICS
4254 #define AE_PARTIAL_BUILD
4255 #endif
4256 
4257 
4258 
4259 #endif
4260 
4261