Sum of a series: Difference between revisions
Content added Content deleted
(added D code) |
(Forth, generic on bounds and function) |
||
Line 47: | Line 47: | ||
writef("sum@[1..1000] = ", series(&term, 1000)) ; |
writef("sum@[1..1000] = ", series(&term, 1000)) ; |
||
}</pre> |
}</pre> |
||
=={{header|Forth}}== |
|||
: sum ( fn start count -- fsum ) |
|||
0e |
|||
bounds do |
|||
i s>d d>f dup execute f+ |
|||
loop drop ; |
|||
:noname ( x -- 1/x^2 ) fdup f* 1/f ; ( xt ) |
|||
1 1000 sum f. \ 1.64393456668156 |
|||
=={{header|Java}}== |
=={{header|Java}}== |
||
public class Sum{ |
public class Sum{ |
Revision as of 16:43, 22 February 2008
Sum of a series
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
Display the sum of a finite series for a given range.
For this task, use S(x) = 1/x^2, from 1 to 1000.
C++
#include <iostream> double f(double x); int main() { unsigned int start = 1; unsigned int end = 1000; double sum = 0; for( unsigned int x = start; x <= end; ++x ) { sum += f(x); } std::cout << "Sum of f(x) from " << start << " to " << end << " is " << sum << std::endl; return 0; } double f(double x) { return ( 1 / ( x * x ) ); }
D
module series ; import std.stdio ; T series(T)(T function(int) t, int end, int start = 1 /* 0 if zero base*/ ) { T sum = 0 ; for(int i = start ; i <= end ; i++) sum += t(i) ; return sum ; } real term(int n){ return 1.0L/(n*n) ; } void main(){ writef("sum@[1..1000] = ", series(&term, 1000)) ; }
Forth
: sum ( fn start count -- fsum ) 0e bounds do i s>d d>f dup execute f+ loop drop ; :noname ( x -- 1/x^2 ) fdup f* 1/f ; ( xt ) 1 1000 sum f. \ 1.64393456668156
Java
public class Sum{ public static double f(double x){ return 1/(x*x); } public static void main(String[] args){ double start = 1; double end = 1000; double sum = 0; for(double x = start;x <= end;x++) sum += f(x); System.out.println("Sum of f(x) from " + start + " to " + end +" is " + sum); } }