annotate j.h @ 0:e0bbaa717f41 draft default tip

lol J
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 25 Nov 2013 11:56:30 -0500 (2013-11-25)
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
1 /* Copyright 1990-2011, Jsoftware Inc. All rights reserved. */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
2 /* License in license.txt. */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
3 /* */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
4 /* Global Definitions */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
5
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
6 #include "js.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
7
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
8 #if SY_WINCE
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
9 #include "..\cesrc\cecompat.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
10 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
11
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
12 #if (SYS & SYS_PCWIN)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
13 #define HEAPCHECK heapcheck()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
14 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
15 #define HEAPCHECK
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
16 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
17
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
18 #if (SYS & SYS_ATARIST)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
19 #define __NO_INLINE__ 1
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
20 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
21
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
22 #if (SYS & SYS_UNIX - SYS_SGI)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
23 #include <memory.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
24 #include <sys/types.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
25 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
26
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
27 #if (SYS & SYS_ANSILIB)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
28 #include <float.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
29 #include <limits.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
30 #define link unused_syscall_link
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
31 #define qdiv unused_netbsd_qdiv
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
32 #include <stdlib.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
33 #undef link
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
34 #undef qdiv
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
35 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
36 #define const /*nothing*/ /* blame rx.h */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
37 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
38
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
39 #if ! SY_WINCE
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
40 #include <errno.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
41 #include <stdio.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
42 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
43
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
44 #include <math.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
45 #include <string.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
46
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
47
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
48 #if SY_64
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
49 #define IMAX 9223372036854775807L
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
50 #define FMTI "%lli"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
51 #define FMTI02 "%02lli"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
52 #define FMTI04 "%04lli"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
53 #define FMTI05 "%05lli"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
54
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
55 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
56 #define IMAX 2147483647L
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
57 #define FMTI "%li"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
58 #define FMTI02 "%02li"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
59 #define FMTI04 "%04li"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
60 #define FMTI05 "%05li"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
61 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
62
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
63 #define IMIN (~IMAX) /* ANSI C LONG_MIN is -LONG_MAX */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
64
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
65
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
66 #if (SYS & SYS_AMIGA)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
67 #define XINF "\177\377\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
68 #define XNAN "\177\361\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
69 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
70
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
71 #if (SYS & SYS_ARCHIMEDES)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
72 #define XINF "\000\000\360\177\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
73 #define XNAN "\000\000\370\377\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
74 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
75
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
76 #if (SYS & SYS_DEC5500) || SY_WINCE_SH
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
77 #define XINF "\000\000\000\000\000\000\360\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
78 #define XNAN "\000\000\000\000\000\000\370\377"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
79 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
80
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
81 #if (SYS & SYS_MACINTOSH)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
82 /* for old versions of ThinkC */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
83 /* #define XINF "\177\377\000\000\000\000\000\000\000\000\000\000" */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
84 /* #define XNAN "\377\377\100\000\100\000\000\000\000\000\000\000" */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
85 /* for ThinkC 7.0 or later */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
86 #define XINF "\177\377\177\377\000\000\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
87 #define XNAN "\377\377\377\377\100\000\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
88 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
89
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
90 #if (SYS & SYS_SUN4+SYS_SUNSOL2)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
91 #define XINF "\177\360\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
92 #define XNAN "\177\377\377\377\377\377\377\377"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
93 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
94
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
95 #if (SYS & SYS_VAX)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
96 #define XINF "\377\177\377\377\377\377\377\377"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
97 #define XNAN "\377\177\377\377\377\377\377\376" /* not right */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
98 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
99
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
100 #if (SY_WINCE_MIPS || SY_WINCE_SH)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
101 #if WIN32_PLATFORM_PSPC
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
102 #define XINF "\000\000\000\000\000\000\360\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
103 #define XNAN "\377\377\377\377\377\377\367\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
104 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
105 #define XINF "\000\000\000\000\000\000\360\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
106 #define XNAN "\001\000\000\000\000\000\360\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
107 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
108 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
109
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
110 #if SY_WINCE_ARM
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
111 #define XINF "\000\000\000\000\000\000\360\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
112 #define XNAN "\000\000\000\000\000\000\370\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
113 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
114
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
115 #if (SYS & SYS_LILENDIAN)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
116 #ifndef XINF
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
117 #define XINF "\000\000\000\000\000\000\360\177"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
118 #define XNAN "\000\000\000\000\000\000\370\377"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
119 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
120 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
121
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
122 #ifndef XINF
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
123 #define XINF "\177\360\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
124 #define XNAN "\177\370\000\000\000\000\000\000"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
125 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
126
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
127
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
128 #ifndef PI
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
129 #define PI ((D)3.14159265358979323846)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
130 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
131 #define P2 ((D)6.28318530717958647693)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
132 #ifndef OVERFLOW
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
133 #define OVERFLOW ((D)8.988465674311578e307)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
134 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
135 #ifndef UNDERFLOW
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
136 #define UNDERFLOW ((D)4.450147717014403e-308)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
137 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
138
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
139
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
140 #define NALP 256 /* size of alphabet */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
141 #define NETX 2000 /* size of error display buffer */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
142 #define NPP 20 /* max value for quad pp */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
143 #define RMAX IMAX /* max rank */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
144 #define NPATH 1024 /* max length for path names, */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
145 /* including trailing 0 byte */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
146
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
147 #if SY_WINCE
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
148 #define NFCALL 100L /* wince named fn call depth */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
149 #define NFDEP 200L /* wince fn call depth */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
150 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
151 #if SYS & SYS_MACOSX
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
152 #define NFCALL 9000L /* darwin named fn call depth */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
153 #define NFDEP 18000L /* darwin fn call depth */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
154 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
155 #ifndef NFCALL
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
156 #define NFCALL 10000L /* all other named fn call depth */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
157 #define NFDEP 20000L /* all other fn call depth */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
158 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
159
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
160 #define NTSTACK 2000L /* size of stack for temps */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
161
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
162 #define IIDOT 0 /* modes for indexofsub() */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
163 #define IICO 1
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
164 #define INUBSV 2
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
165 #define INUB 3
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
166 #define ILESS 4
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
167 #define INUBI 5
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
168 #define IEPS 6
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
169 #define II0EPS 7
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
170 #define II1EPS 8
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
171 #define IJ0EPS 9
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
172 #define IJ1EPS 10
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
173 #define ISUMEPS 11
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
174 #define IANYEPS 12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
175 #define IALLEPS 13
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
176 #define IIFBEPS 14
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
177
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
178 #define IPHOFFSET 30 /* offset for prehashed versions */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
179 #define IPHIDOT 30
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
180 #define IPHICO 31
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
181 #define IPHLESS 34
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
182 #define IPHEPS 36
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
183 #define IPHI0EPS 37
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
184 #define IPHI1EPS 38
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
185 #define IPHJ0EPS 39
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
186 #define IPHJ1EPS 40
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
187 #define IPHSUMEPS 41
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
188 #define IPHANYEPS 42
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
189 #define IPHALLEPS 43
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
190 #define IPHIFBEPS 44
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
191
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
192
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
193 #if SY_64 && SY_WIN32
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
194 #define jfloor jfloor1
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
195 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
196 #define jfloor floor
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
197 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
198
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
199 #define BB 8 /* # bits in a byte */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
200 #if SY_64
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
201 #define BW 64 /* # bits in a word */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
202 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
203 #define BW 32
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
204 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
205
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
206 #define ABS(a) (0<=(a)?(a):-(a))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
207 #define ACX(a) {AC(a)=IMAX/2;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
208 #define ASSERT(b,e) {if(!(b)){jsignal(e); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
209 #define ASSERTD(b,s) {if(!(b)){jsigd((s)); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
210 #define ASSERTMTV(w) {RZ(w); ASSERT(1==AR(w),EVRANK); ASSERT(!AN(w),EVLENGTH);}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
211 #define ASSERTN(b,e,nm) {if(!(b)){jt->curname=(nm); jsignal(e); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
212 #define ASSERTSYS(b,s) {if(!(b)){jsignal(EVSYSTEM); jtwri(jt,MTYOSYS,"",(I)strlen(s),s); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
213 #define ASSERTW(b,e) {if(!(b)){if((e)<=NEVM)jsignal(e); else jt->jerr=(e); R;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
214 #define CALL1(f,w,fs) ((f)(jt, (w),(A)(fs)))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
215 #define CALL2(f,a,w,fs) ((f)(jt,(a),(w),(A)(fs)))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
216 #define DF1(f) A f(J jt, A w,A self)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
217 #define DF2(f) A f(J jt,A a,A w,A self)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
218 #define DO(n,stm) {I i=0,_n=(n); for(;i<_n;i++){stm}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
219 #define DQ(n,stm) {I i=(n)-1; for(;i>=0;--i){stm}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
220 #define ds(c) pst[(UC)(c)]
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
221 #define EPILOG(z) R gc(z,_ttop)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
222 #define FDEPDEC(d) {jt->fdepi-=d;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
223 #define FDEPINC(d) {ASSERT(jt->fdepn>=d+jt->fdepi,EVSTACK); jt->fdepi+=d;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
224 #define FCONS(x) fdef(CFCONS,VERB,jtnum1,jtnum2,0L,0L,(x),0L,RMAX,RMAX,RMAX)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
225 #define FEQ(u,v) (ABS((u)-(v))<=jt->fuzz*MAX(ABS(u),ABS(v)))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
226 #define F1(f) A f(J jt, A w)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
227 #define F2(f) A f(J jt,A a,A w)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
228 #define F1RANK(m,f,self) {RZ( w); if(m<AR(w) )R rank1ex( w,(A)self,(I)m, f);}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
229 #define F2RANK(l,r,f,self) {RZ(a&&w); if(l<AR(a)||r<AR(w))R rank2ex(a,w,(A)self,(I)l,(I)r,f);}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
230 #define GA(v,t,n,r,s) RZ(v=ga(t,(I)(n),(I)(r),(I*)(s)))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
231 #define HN 3L
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
232 #define IC(w) (AR(w) ? *AS(w) : 1L)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
233 #define ICMP(z,w,n) memcmp((z),(w),(n)*SZI)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
234 #define ICPY(z,w,n) memcpy((z),(w),(n)*SZI)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
235 #define INF(x) ((x)==inf||(x)==infm)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
236 #define IX(n) apv((n),0L,1L)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
237 #define JATTN {if(*jt->adbreak&&!jt->breakignore){jsignal(EVATTN); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
238 #define JBREAK0 {if(2<=*jt->adbreak&&!jt->breakignore){jsignal(EVBREAK); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
239 #define MAX(a,b) ((a)>(b)?(a):(b))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
240 #define MC memcpy
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
241 #define MIN(a,b) ((a)<(b)?(a):(b))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
242 #define MLEN (SY_64?63:31)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
243 #define NAN0 (_clearfp())
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
244 #define NAN1 {if(_SW_INVALID&_clearfp()){jsignal(EVNAN); R 0;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
245 #define NAN1V {if(_SW_INVALID&_clearfp()){jsignal(EVNAN); R ;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
246 #define PROLOG I _ttop=jt->tbase+jt->ttop
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
247 #define R return
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
248 #define RE(exp) {if((exp),jt->jerr)R 0;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
249 #define RER {if(er){jt->jerr=er; R;}}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
250 #define RESETERR {jt->etxn=jt->jerr=0;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
251 #define RNE(exp) {R jt->jerr?0:(exp);}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
252 #define RZ(exp) {if(!(exp))R 0;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
253 #define SBSV(x) (jt->sbsv+(I)(x))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
254 #define SBUV(x) (jt->sbuv+(I)(x))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
255 #define SGN(a) ((0<(a))-(0>(a)))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
256 #define SMAX 65535
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
257 #define SMIN (-65536)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
258 #define SZA ((I)sizeof(A))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
259 #define SZD ((I)sizeof(D))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
260 #define SZI ((I)sizeof(I))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
261 #define VAL1 '\001'
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
262 #define VAL2 '\002'
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
263
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
264
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
265 #if SYS & SYS_LILENDIAN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
266 #define B0000 0x00000000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
267 #define B0001 0x01000000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
268 #define B0010 0x00010000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
269 #define B0011 0x01010000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
270 #define B0100 0x00000100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
271 #define B0101 0x01000100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
272 #define B0110 0x00010100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
273 #define B0111 0x01010100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
274 #define B1000 0x00000001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
275 #define B1001 0x01000001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
276 #define B1010 0x00010001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
277 #define B1011 0x01010001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
278 #define B1100 0x00000101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
279 #define B1101 0x01000101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
280 #define B1110 0x00010101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
281 #define B1111 0x01010101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
282 #define BS00 0x0000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
283 #define BS01 0x0100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
284 #define BS10 0x0001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
285 #define BS11 0x0101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
286 #else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
287 #define B0000 0x00000000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
288 #define B0001 0x00000001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
289 #define B0010 0x00000100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
290 #define B0011 0x00000101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
291 #define B0100 0x00010000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
292 #define B0101 0x00010001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
293 #define B0110 0x00010100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
294 #define B0111 0x00010101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
295 #define B1000 0x01000000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
296 #define B1001 0x01000001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
297 #define B1010 0x01000100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
298 #define B1011 0x01000101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
299 #define B1100 0x01010000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
300 #define B1101 0x01010001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
301 #define B1110 0x01010100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
302 #define B1111 0x01010101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
303 #define BS00 0x0000
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
304 #define BS01 0x0001
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
305 #define BS10 0x0100
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
306 #define BS11 0x0101
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
307 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
308
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
309 #include "ja.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
310 #include "jc.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
311 #include "jtype.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
312 #include "jt.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
313 #include "jlib.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
314 #include "je.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
315 #include "jerr.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
316 #include "va.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
317 #include "vq.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
318 #include "vx.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
319 #include "vz.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
320 #include "vdx.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
321 #include "m.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
322 #include "a.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
323 #include "s.h"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
324
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
325 // JPFX("here we are\n")
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
326 // JPF("size is %i\n", v)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
327 // JPF("size and extra: %i %i\n", (v,x))
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
328 #define JPFX(s) {char b[1000]; sprintf(b, s); jsto(gjt,MTYOFM,b);}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
329 #define JPF(s,v) {char b[1000]; sprintf(b, s, v); jsto(gjt,MTYOFM,b);}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
330 extern J gjt; // global for JPF (procs without jt)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
331
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
332 #if SY_WINCE_MIPS
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
333 /* strchr fails for CE MIPS - neg chars - spellit fails in ws.c for f=.+. */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
334 #define strchr(a,b) strchr(a, (UC)b)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
335 #endif
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
336
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
337 #if SYS & SYS_UNIX
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
338 #include <fenv.h>
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
339 #define _isnan isnan
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
340 #define _SW_INVALID FE_INVALID
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
341
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
342 static inline UINT _clearfp(void){int r=fetestexcept(FE_ALL_EXCEPT);
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
343 feclearexcept(FE_ALL_EXCEPT); return r;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
344 }
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
345 #endif