math.extras: rename to linspace[a,b) and linspace[a,b] and fixes.

db4
John Benediktsson 2013-03-20 15:15:50 -07:00
parent 5e41a50870
commit da1931317d
3 changed files with 27 additions and 26 deletions

View File

@ -58,18 +58,18 @@ HELP: sinc
{ $description "Returns the " { $link sinc } " function, calculated according to " { $snippet "sin(pi * x) / (pi * x)" } ". The name " { $link sinc } " is short for \"sine cardinal\" or \"sinus cardinalis\"." } { $description "Returns the " { $link sinc } " function, calculated according to " { $snippet "sin(pi * x) / (pi * x)" } ". The name " { $link sinc } " is short for \"sine cardinal\" or \"sinus cardinalis\"." }
{ $notes { $snippet "0 sinc" } " is the limit value of 1." } ; { $notes { $snippet "0 sinc" } " is the limit value of 1." } ;
HELP: linspace) HELP: linspace[a,b)
{ $values { "from" number } { "to" number } { "points" number } { "seq" sequence } } { $values { "a" number } { "b" number } { "points" number } { "seq" sequence } }
{ $description "Return evenly spaced numbers over a specified interval " { $snippet "[from,to)" } "." } ; { $description "Return evenly spaced numbers over an interval " { $snippet "[a,b)" } "." } ;
HELP: linspace] HELP: linspace[a,b]
{ $values { "from" number } { "to" number } { "points" number } { "seq" sequence } } { $values { "a" number } { "b" number } { "points" number } { "seq" sequence } }
{ $description "Return evenly spaced numbers over a specified interval " { $snippet "[from,to]" } "." } ; { $description "Return evenly spaced numbers over an interval " { $snippet "[a,b]" } "." } ;
HELP: logspace) HELP: logspace[a,b)
{ $values { "from" number } { "to" number } { "points" number } { "base" number } { "seq" sequence } } { $values { "a" number } { "b" number } { "points" number } { "base" number } { "seq" sequence } }
{ $description "Return evenly spaced numbers on a log scaled interval " { $snippet "[base^from,base^to)" } "." } ; { $description "Return evenly spaced numbers on a log scaled interval " { $snippet "[base^a,base^b)" } "." } ;
HELP: logspace] HELP: logspace[a,b]
{ $values { "from" number } { "to" number } { "points" number } { "base" number } { "seq" sequence } } { $values { "a" number } { "b" number } { "points" number } { "base" number } { "seq" sequence } }
{ $description "Return evenly spaced numbers on a log scaled interval " { $snippet "[base^from,base^to]" } "." } ; { $description "Return evenly spaced numbers on a log scaled interval " { $snippet "[base^a,base^b]" } "." } ;

View File

@ -78,5 +78,5 @@ IN: math.extras.test
{ 0 1 0 0 2 3 } { 0 1 0 0 2 3 }
} [ { 1 2 1 1 3 4 } unique-indices ] unit-test } [ { 1 2 1 1 3 4 } unique-indices ] unit-test
{ { 1 8+4/5 16+3/5 24+2/5 32+1/5 } } [ 1 40 5 linspace) >array ] unit-test { { 1 8+4/5 16+3/5 24+2/5 32+1/5 } } [ 1 40 5 linspace[a,b) >array ] unit-test
{ { 1 10+3/4 20+1/2 30+1/4 40 } } [ 1 40 5 linspace] >array ] unit-test { { 1 10+3/4 20+1/2 30+1/4 40 } } [ 1 40 5 linspace[a,b] >array ] unit-test

View File

@ -1,11 +1,12 @@
! Copyright (C) 2012 John Benediktsson ! Copyright (C) 2012 John Benediktsson
! See http://factorcode.org/license.txt for BSD license ! See http://factorcode.org/license.txt for BSD license
USING: arrays assocs assocs.extras combinators.short-circuit fry USING: arrays assocs assocs.extras combinators
grouping kernel locals math math.combinatorics math.constants combinators.short-circuit fry grouping kernel locals math
math.functions math.order math.primes math.ranges math.combinatorics math.constants math.functions math.order
math.ranges.private math.statistics math.vectors memoize math.primes math.ranges math.ranges.private math.statistics
random sequences sequences.extras sets sorting ; math.vectors memoize random sequences sequences.extras sets
sorting ;
IN: math.extras IN: math.extras
@ -206,18 +207,18 @@ PRIVATE>
PRIVATE> PRIVATE>
: linspace) ( from to points -- seq ) : linspace[a,b) ( a b points -- seq )
steps ,b) <range> ; steps ,b) <range> ;
: linspace] ( from to points -- seq ) : linspace[a,b] ( a b points -- seq )
{ {
{ [ dup 1 < ] [ 3drop { } ] } { [ dup 1 < ] [ 3drop { } ] }
{ [ dup 1 = ] [ 2drop 1array ] } { [ dup 1 = ] [ 2drop 1array ] }
[ steps <range> ] [ 1 - steps <range> ]
} cond ; } cond ;
: logspace) ( from to points base -- seq ) : logspace[a,b) ( a b points base -- seq )
[ linspace) ] dip swap n^v ; [ linspace[a,b) ] dip swap n^v ;
: logspace] ( from to points base -- seq ) : logspace[a,b] ( a b points base -- seq )
[ linspace] ] dip swap n^v ; [ linspace[a,b] ] dip swap n^v ;