i for which i+1>i holds true.
Using the while loop determine your maximum
integer and compare it with int.MaxValue.
Hint: something like
int i=1; while(i+1>i) {i++;}
Write("my max int = {0}\n",i);
It can take some seconds to calculate.
i for which i-1<i holds
true.
Using the while loop determine your minimum
integer and compare with int.MinValue.
while loop calculate the
machine epsilon for the types float and double.
Hint:
double x=1; while(1+x!=1){x/=2;} x*=2;
float y=1F; while((float)(1F+y) != 1F){y/=2F;} y*=2F;
There seem to be no predefined values for this numbers in csharp (tell
me if you found them). However, for a IEEE 64-bit floating-point number,
where 1bit is reserved for the sign and 11bits for exponent, there are
52bits remaining for the fraction, therefore the double machine epsilon
must be about System.Math.Pow(2,-52).
For single precision the machine epsilon should be about
System.Math.Pow(2,-23).
Check this.
int max=int.MaxValue/2; (or, say,
int.MaxValue/3, if
the execution time is longer than you are willing to wait)
and calculate (using iteration statements) the following harmonic sum,
float float_sum_up = 1f + 1f/2 + 1f/3 + ... + 1f/max;and a seemingly the same harmonic sum, only from the other side,
float float_sum_down = 1f/max + 1f/(max-1) + 1f/(max-2) + ... +1f;with
float type and compare the two sums.
Something like
int max=int.MaxValue/3;
float float_sum_up=1F;
for(int i=2;i<max;i++)float_sum_up+=1F/i;
Write("float_sum_up={0}\n",float_sum_up);
float float_sum_down=1F/max;
for(int i=max-1;i>0;i--)float_sum_down+=1F/i;
Write("float_sum_down={0}\n",float_sum_down);
max?
sum_up_double and
sum_down_double using double type. Explain
the result.
bool approx(double a, double b, double tau=1e-9, double epsilon=1e-9)that returns
true if the numbers 'a' and 'b' are equal with absolute
precision 'tau',
\[|a-b|\lt\tau\]
or are equal with relative precision 'epsilon',
\[\frac{|a-b|}{|a|+|b|}\lt\frac{\epsilon}{2}\]
and returns false otherwise.
The function must be placed in a separate .cs file, compiled
separately and then linked to the final executable.