Slava Pestov
3ab6dbac22
math.floats.env: fix compiled trap unit tests
2009-09-13 18:22:49 -05:00
Slava Pestov
d14f227905
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-13 00:09:09 -05:00
Slava Pestov
3a61107f1d
typos in altivec env
2009-09-12 22:30:11 -05:00
Slava Pestov
32b95c2cdf
math: add unordered comparison operators u< u<= u> u>= which behave exactly like < <= > >= except no floating point exceptions are set if one or both inputs are NaNs; also add efficient intrinsic for unordered? predicate, and fix propagation type functions for abs, absq, and bitnot
2009-09-12 22:20:13 -05:00
Joe Groff
53e23de104
set altivec denormal flag when with-denormal-mode is used
2009-09-12 20:39:41 -05:00
Joe Groff
54162af3fe
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-12 19:45:47 -05:00
Joe Groff
6d328be69b
all-fp-exceptions constant
2009-09-12 18:13:25 -05:00
Slava Pestov
1337f82ce6
math.order: better docs
2009-09-12 16:33:42 -05:00
Slava Pestov
51dd22b119
math.floats.env.ppc: fix ppc-fp-traps>bit
2009-09-12 12:57:15 -05:00
Slava Pestov
d5206b26ec
math.floats.env.ppc: fix ppc-fp-traps-bits
2009-09-12 12:49:51 -05:00
Joe Groff
d4ee121750
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-12 09:04:53 -05:00
Joe Groff
df4d1f8dd2
typos in math.floats.env.ppc
2009-09-12 09:03:27 -05:00
Slava Pestov
b61ff44b66
math.vectors.simd: don't run x86-specific tests on PPC
2009-09-11 21:38:40 -05:00
Joe Groff
1be4c3a6a7
typo
2009-09-11 20:31:06 -05:00
Joe Groff
ffcc630601
log1+ word (maps to C99 log1p function)
2009-09-11 20:28:15 -05:00
Slava Pestov
dfb07601fa
Merge branch 'for-slava' of git://git.rfc1149.net/factor
2009-09-10 13:15:18 -05:00
Joe Groff
bda5963c62
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-09 23:38:01 -05:00
Joe Groff
61851fcd7a
take the union of the x87 and sse exception flags when reporting fp-exception-flags. add back the unit tests i took out since this should fix the problem
2009-09-09 23:37:48 -05:00
Slava Pestov
7f2e2b1777
Specialized array overhaul
...
- Replace hand-written specialized-arrays.* subvocabularies with new system; instead of USE:ing specialized-arrays.T, do SPECIALIZED-ARRAY: T
- Ditto for specialized-vectors; use SPECIALIZED-VECTOR:
- io.mmap.functor: removed entirely, use <mapped-array> instead
- struct-arrays and struct-vectors have been removed because specialized arrays and vectors subsume them entirely
2009-09-09 22:33:34 -05:00
Joe Groff
3d49cc5a0d
change math.floats.env tests not to use any libm functions, which don't reliably set the right hardware exceptions on linux glibc
2009-09-09 18:00:38 -05:00
Joe Groff
01b5430fbf
make math.floats.env backends unportable
2009-09-09 17:32:26 -05:00
Samuel Tardieu
d23286a9ef
Do not repeat sanity tests at each iteration
2009-09-09 21:35:24 +02:00
Joe Groff
1c62a978d0
add some tests to help track down leaks in FP state changes
2009-09-08 23:07:33 -05:00
Slava Pestov
74fa73aeaf
Fix various test failures
2009-09-08 19:18:56 -05:00
Slava Pestov
c52ffebffe
math.rectangles.positioning: don't position popups off-screen
2009-09-08 16:23:02 -05:00
Joe Groff
1fcc0875ba
update math.floats.env.x86 for sse detection change
2009-09-08 15:47:03 -05:00
Joe Groff
2ad9459b85
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-08 15:37:32 -05:00
Joe Groff
0ec342a1c5
factor out x86 and ppc backends for math.floats.env; update both x87 and SSE state on x86
2009-09-08 15:36:53 -05:00
Slava Pestov
d596e3abe7
math.vectors.simd: fix help rendering
2009-09-08 14:49:27 -05:00
Slava Pestov
82a8ef7beb
math.vectors.simd: remove useless dependency
2009-09-08 13:55:56 -05:00
Slava Pestov
aa4307765b
Merge branch 'master' into simd
2009-09-08 13:38:14 -05:00
Slava Pestov
f5536bdde0
math.vectors.specialization: specialized vector words are now subwords of the generic vector word. This ensures that specializations get compiled correctly in all cases
2009-09-08 13:37:25 -05:00
Slava Pestov
c707ba5d61
Merge branch 'for-slava' of git://git.rfc1149.net/factor
2009-09-08 13:09:27 -05:00
Slava Pestov
0c936c14ca
Merge branch 'for-slava' of git://git.rfc1149.net/factor into simd
2009-09-08 13:02:00 -05:00
Slava Pestov
38c961cf6f
Fixes
2009-09-08 00:13:18 -05:00
Slava Pestov
bbca00e2ae
Fix conflicts
2009-09-07 23:51:25 -05:00
Joe Groff
e3509e7f11
tighten up math.floats.env docs
2009-09-07 10:50:40 -05:00
Joe Groff
25b45d6af0
test fp traps
2009-09-06 09:04:46 -05:00
Joe Groff
e705470d42
make public words for querying current rounding mode, denormal mode, and trap set
2009-09-06 08:50:54 -05:00
Joe Groff
96db254311
unit tests for math.floats.env
2009-09-06 07:50:56 -05:00
Joe Groff
36ec53a968
math.floats.env vocab with words to control the floating-point environment
...
add some functions to the VM to grab and set the fpu control register
2009-09-05 19:48:13 -05:00
Slava Pestov
a054ec3d64
specialized-arrays.direct is no more; instead, every specialized-array.<foo> vocabulary has a <direct-T-array> constructor
2009-09-04 22:01:55 -05:00
Slava Pestov
e11d1e37f5
math.vectors.simd: allow punning SIMD vectors between types
2009-09-04 02:35:58 -05:00
Slava Pestov
6494e7a53b
math.vectors.simd: slightly faster 'sum' on 256-bit vectors: add the two components then do horizontal add, instead of doing a horizontal add on each one and adding the results
2009-09-04 02:23:25 -05:00
Slava Pestov
1fc809b643
math.vectors.simd: docs
2009-09-04 01:22:18 -05:00
Slava Pestov
6b5e40b2fc
functors: support private words with DEFINES-PRIVATE; use this to make some words generated by math.vectors.simd.functor private
2009-09-04 01:21:59 -05:00
Slava Pestov
55c449c6e2
math.vectors.simd: define fallbacks for all vector constructors so that code can still work even if SIMD is not available
2009-09-03 21:37:55 -05:00
Slava Pestov
4d5a4222b6
More SIMD work
...
- Rename SIMD types and register representations: <type>-<count> rather than <count><type>-array
- Make a functor to define 256-bit vector types, use it to define float-8 type
- Make SIMD instructions pure-insns so that they participate in value numbering
2009-09-03 20:58:56 -05:00
Slava Pestov
bf81cb4259
math.vectors.simd: split off intrinsics into a sub-vocabulary, to avoid loading most of the SIMD code on bootstrap
2009-09-03 03:43:43 -05:00
Slava Pestov
906a0d212a
Detect SSE version and enable the correct set of SIMD intrinsics
2009-09-03 03:28:38 -05:00
Slava Pestov
ff8c70dbe0
Initial implementation of SSE vector intrinsics:
...
- cpu.architecture: add SSE vector representations
- compiler.cfg.intrinsics.alien: remove an attempt at optimization that value numbering handles now
- compiler.cfg.representations: support instructions where the representation is set in the 'rep' slot, and support conversions between single and double floats
- alien-float, set-alien-float now use the single float representation, and the conversion is implicit; this fixes a long-standing bug where a register could get clobbered because of how %set-alien-float was defined on x86
- math.vectors.specialization: add support for SIMD specialization (where the vector word's body is replaced by another quotation), also specialize the 'sum' word
- math.vectors.simd: 4float-array, 2double-array, 4double-array types, and specializers for the math.vectors words
2009-09-03 02:33:07 -05:00
Slava Pestov
e86a76a7d8
math.constants: add single float epsilon value
2009-09-03 02:23:22 -05:00
Samuel Tardieu
21a89bab0e
Make "divisors" work with 1 as well
2009-09-02 12:07:23 +02:00
Joe Groff
ccb27f81ea
update math.blas for <c-array> change
2009-08-30 22:37:58 -05:00
Slava Pestov
ec70e1d714
More minor documentation tweaks
2009-08-30 06:32:20 -05:00
Slava Pestov
7983b5515f
math.functions: some fixes
2009-08-30 06:19:14 -05:00
Slava Pestov
0db01f6d5f
compiler.cfg.linear-scan now supports partial sync-points where all registers are spilled; taking advantage of this, there are new trigonometric intrinsics which yield a 2x performance boost on benchmark.struct-arrays and a 25% boost on benchmark.partial-sums
2009-08-30 04:52:01 -05:00
Marc Fauconneau
2d4ba8de4d
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-30 17:31:30 +09:00
Marc Fauconneau
bf15648b4d
Merge branch 'master' of git@github.com:prunedtree/factor
...
Conflicts:
basis/math/matrices/matrices.factor
2009-08-30 17:24:25 +09:00
Samuel Tardieu
e5897d52b2
Ensure that random-prime result has the right size
...
As noted by Slava, choosing the next prime following a random number
with a specified number of bits may give a number one more bit long.
2009-08-29 21:42:15 +02:00
Slava Pestov
2bb6293217
compiler: add fixnum-min/max intrinsics; ~10% speedup on benchmark.yuv-to-rgb
2009-08-28 19:02:59 -05:00
Slava Pestov
d957ae4e44
Performance improvements to make struct-arrays benchmark faster
...
- improved optimization of ##unbox-any-c-ptr on ##box-displaced-alien; convert it to ##unbox-c-ptr where possible using class info stored in the ##bda instruction
- make fcos, fsin, etc inline again; everything in math.libm inline again, except for fsqrt which is an intrinsic
- convert min and max on floats to float-min and float-max
- make min and max not inline, so that the above can work
- struct-arrays: rice a bit so that more fixnums come up
2009-08-28 05:21:16 -05:00
Slava Pestov
0df8aadce2
cpu.x86: use SQRTSD instruction for math.libm:fsqrt word
2009-08-25 23:22:15 -05:00
Slava Pestov
f82627e736
math.intervals: comment out questionable unit tests
2009-08-22 19:39:32 -05:00
Slava Pestov
81b72cb5c5
Add some unit tests
2009-08-22 17:15:10 -05:00
Slava Pestov
770429a629
math.intervals: help lint fix
2009-08-19 16:08:52 -05:00
Slava Pestov
2bc38bf019
math.intervals: tighter interval arithmetic for intervals with infinities
2009-08-19 02:32:18 -05:00
Slava Pestov
030b1b816c
Add inline declarations for various assorted methods
2009-08-17 22:32:21 -05:00
Doug Coleman
7c92ab1ea5
move if-zero etc to math, remove 1-/1+ from math
2009-08-14 14:27:23 -05:00
Doug Coleman
3f3d57032b
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places, minor refactoring
2009-08-13 19:21:44 -05:00
Slava Pestov
0df4436711
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-12 03:26:13 -05:00
Slava Pestov
4ecf5a904a
More accurate wrap-interval in compiler.tree.propagation.info fixes test regression; constructing an interval with endpoints at infinity now outputs full-interval
2009-08-12 03:25:53 -05:00
Doug Coleman
14e8abd563
even better error handling for division by zero
2009-08-11 22:30:16 -05:00
Doug Coleman
02becc26fc
add docs for if-zero etc, add docs for 10^
2009-08-11 18:45:01 -05:00
Doug Coleman
c12d6fe543
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-11 18:16:30 -05:00
Doug Coleman
4a3d63e00a
use if-zero in a few more places
2009-08-11 18:15:53 -05:00
Doug Coleman
4fef246ca4
add 10^ to math.functions and update usages
2009-08-11 18:00:24 -05:00
Slava Pestov
7bfbb0c5ac
math.intervals: fix interval-rem
2009-08-11 16:49:28 -05:00
Slava Pestov
7e35723db0
compiler.tree.propagation: be more careful with intervals, ensuring that the inferred interval of a value is a subset of the value class's interval. This improves accuracy, for example [ >fixnum 1 + >fixnum most-positive-fixnum <= ] constant-folds to true
2009-08-10 01:16:49 -05:00
Slava Pestov
d19c403fee
alien.structs: struct-type now has a class slot; fix specialized complex-float/double arrays
2009-08-09 16:10:11 -05:00
Slava Pestov
1cb0f3370b
math.vectors.specialization: first attempt at some call site splitting for vector ops. Specialized array types generate customized variants of all vector words, if input types are known at compile time, a call to the specialized version is inserted
2009-08-09 03:07:33 -05:00
Slava Pestov
e400d80d8b
More accurate interval inference for mod, rem, and propagation can now infer intervals in the case where a value might be f. so, [ [ 127 bitand ] [ drop f ] if dup [ 0 >= ] [ not ] if ] now constant-folds down to 't'!
2009-08-08 23:03:45 -05:00
Slava Pestov
61ea749bb6
More accurate interval-mod and interval-rem
2009-08-08 22:01:12 -05:00
Doug Coleman
78bbf96a6d
move signed-le> to io.binary, clean up using list for math.bitwise
2009-07-23 15:54:57 -05:00
Joe Groff
809b40d497
preserve sequence type in math.matrices:cross
2009-07-07 16:26:50 -05:00
Joe Groff
96ec54106b
for the FPS classicists... skew matrix constructor
2009-07-04 19:13:31 -05:00
Joe Groff
e39f454aa5
common 3d matrix constructors
2009-07-02 19:05:24 -05:00
Slava Pestov
612e4b99b0
compiler.cfg.linear-scan.assignment: insert-copy did the wrong thing if the second interval had been split. Fixes compilation of 'trilerp'
2009-06-30 21:07:39 -05:00
Samuel Tardieu
4d5392fe56
Add divisors to math.primes.factors
2009-06-29 16:56:00 +02:00
Samuel Tardieu
094c82c50b
Short circuit trivial composites
2009-06-24 15:53:50 +02:00
Samuel Tardieu
50191588e4
Get rid of vector reallocation by preallocating it
2009-06-24 15:53:46 +02:00
Samuel Tardieu
29b5a1dff5
Add extra tests for math.primes
2009-06-24 13:15:13 +02:00
Samuel Tardieu
41d804ddbd
Pack primes numbers by slices of 30
...
In any given 30 successive integers greater than 5, there are at most
8 prime numbers. Use this to tightly pack the result of the Eratostene
sieve. This lets us store more prime numbers than before in less space.
2009-06-24 13:15:12 +02:00
Joe Groff
037ed45339
give range models a step parameter; use it on sliders so the thumb can step by any interval
2009-06-18 20:57:02 -05:00
Joe Groff
76b3e5fea2
win32 support for window-controls
2009-06-18 11:41:34 -05:00
prunedtree
9ffbf32c6f
unit test for m^n
2009-06-12 01:35:25 -07:00
prunedtree
b426f28738
make m^n private
2009-06-12 01:29:34 -07:00
Doug Coleman
6a67f02f69
fix load error
2009-06-12 02:43:05 -05:00
Doug Coleman
7134236e46
Merge branch 'master' of git://github.com/prunedtree/factor
...
Conflicts:
basis/compression/inflate/inflate.factor
basis/math/matrices/matrices.factor
2009-06-12 02:33:49 -05:00
Joe Groff
a2640672d7
«0.0 1.0 ^» was returning 0 instead of 0.0
2009-06-11 17:47:52 -05:00