// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // // This module computes Euler's number 2.718... with N decimal digits by the // // well-known formula e = sum(i=0..oo) 1/i!. All computations are made on type// // nat using a fixpoint arithmetic where the decimal point is moved N decimal // // digits to the left. // // ************************************************************************** // macro N = 300; module EulerNumber(nat e,event !rdy) { nat s,i; s = exp(10,N); i = 2; e = s; do { next(s) = s/i; next(e) = e + s; next(i) = i+1; pause; } while(s>0); emit(rdy); } drivenby { await(rdy); }