matmul
FP matrix multiplication
- extensions
- raw README.md
- raw benchmark.4th
- raw matmul.4th
- raw package.4th
- raw runbenchs
- raw test.4th
: init-matrix {: m ncols nrows nstart -- :} \ initialize m with floats nstart, nstart+1, ... nstart nrows 0 ?do ncols 0 ?do dup 0 d>f m j ncols * i + floats + f! 1+ loop loop drop ; 6 floats allocate throw constant a a 2 3 1 init-matrix 6 floats allocate throw constant b b 3 2 7 init-matrix falign here 9 floats allot constant c 8 floats allocate throw constant e e 4 2 8 init-matrix falign here 12 floats allot constant f [undefined] f.rdp [if] : f.rdp ( r nr nd np -- ) 2drop drop ; [then] : mat. {: m ncols nrows -- :} nrows 0 ?do cr ncols 0 ?do m j ncols * i + floats + f@ 7 0 1 f.rdp space loop loop ; \ a 2 3 mat. cr \ b 3 2 mat. cr a b c 3 2 3 matmulr \ c 3 3 mat. cr \ a 2 3 mat. cr \ e 4 2 mat. cr a e f 3 2 4 matmulr \ f 4 3 mat. cr bye : g, ( n -- ) s>d d>f f, ; create d 27 g, 30 g, 33 g, 61 g, 68 g, 75 g, 95 g, 106 g, 117 g, create g 32 g, 35 g, 38 g, 41 g, 72 g, 79 g, 86 g, 93 g, 112 g, 123 g, 134 g, 145 g, c 9 floats d 9 floats compare f 12 floats g 12 floats compare or [if] cr .( result wrong ) abort [else] [defined] matmul-verbose [if] cr .( result correct ) cr [then] [then]
by AntonErtl
Versions
2.0.2, 2.0.1, 2.0.0, 1.0.2, 1.0.1, 1.0.0
Tags
ansforth94, forth-94, forth-2012, floating-point-arithmetic, benchmark
Dependencies
None
Dependents
None