Sponsored Content
Top Forums Shell Programming and Scripting Calculate the constant e to 14+ decimal places using integer maths. Post 303039716 by wisecracker on Sunday 13th of October 2019 10:40:33 AM
Old 10-13-2019
Calculate the constant e to 14+ decimal places using integer maths.

Hi guys...

I am loving this integer maths thing.
64 bit systems are certainly easier than 32 bit, but hey, I don't intend to leave out my fav' platform.
Using one of the 'Brothers' methods, URL inside the code.
Code:
#!/bin/sh
#
# #!/usr/local/bin/dash
# e_constant.sh
# Brother's formula [2].
# http://www.brotherstechnology.com/math/e-formulas.html
# e=2.718281828459045 from Python 3.8.0.
# Google's value, e=2.71828182846.
#
# For *NIX 64 bit or greater systems, 32 bit systems commented out.
# (Also tested on AMIGA OS_3.1 using ADE the UNIX emulator and ksh88.)

echo ""
echo "Calculate e to 14+ decimal places, 64 bit, (7+ decimal places, 32 bit),"
echo "integer maths inside 'dash' or 'sh'."
echo ""

initial_e=0

# 32 bit version for AMIGA ADE.
# e=200000000

# Default 64 bit version.
e=2000000000000000
k=0
factorial=1
diff=$(( e - initial_e ))
while [ ${diff} -gt 1 ]
do
    initial_e=${e}
    k=$(( k + 1 ))
    factorial=$(( factorial * 2 * k * (2 * k + 1) ))

    # 32 bit version.
    # e=$(( e + (((2 * k + 2) * 100000000) / factorial) ))

    # Default 64 bit version.
    e=$(( e + (((2 * k + 2) * 1000000000000000) / factorial) ))
    diff=$(( e - initial_e ))
done

# 32 bit version.
# printf "%.8f\n" $(( e ))e-8

# Default 64 bit version.
result=$( printf "%.15f\n" $(( e ))e-15 )
# Result: 2.718281828459041
echo "${result}"

echo ""
echo "Python 3.8.0 value, e = 2.718281828459045."
echo "Number of iterations = ${k}."
echo ""

Result in 64 bit mode, my usual platform.
Code:
Last login: Sun Oct 13 15:21:17 on ttys000
AMIGA:amiga~> cd Desktop/Code/Shell
AMIGA:amiga~/Desktop/Code/Shell> ./e_constant.sh

Calculate e to 14+ decimal places, 64 bit, (7+ decimal places, 32 bit),
integer maths inside 'dash' or 'sh'.

2.718281828459041

Python 3.8.0 value, e = 2.718281828459045.
Number of iterations = 9.

AMIGA:amiga~/Desktop/Code/Shell> _

These 2 Users Gave Thanks to wisecracker For This Post:
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

trimm up the decimal places in output

I have a perl script that reports the avg time of a application call and the total number of calls. This works fine, however I would like to trim the number of decimal places reported from 12 to like 3 and I don't know how. Any suggestions? Here is what I use to get the avg time... for $eRef (... (2 Replies)
Discussion started by: theninja
2 Replies

2. Shell Programming and Scripting

Four decimal places with awk

i have a script in which awk prints "($2-1700)/10000" and the answer is -0.07,but i want the answer in 4 decimal places. that is -0.0700. How can i sue awk to get my results in four decimal places (4 Replies)
Discussion started by: tomjones
4 Replies

3. Shell Programming and Scripting

Decimal places

i need to multiplay a number with 1.00.. so that the output should contain two decimal places at end.. for example... 236 * 1.00 = 236.00 245.8 * 1.00 = 245.80 but when i perform multiplication it shows output as. 236 245.8 can anyone help me to get the actual output of... (11 Replies)
Discussion started by: arunmanas
11 Replies

4. Shell Programming and Scripting

Using IF statements with maths where the input is not an integer

Hi All I've made a few scripts which using GDAL extract the value of a pixel within a given raster. The purpose is to work out the combine value of every pixel. I thought there may have been an easier way to do this but alas! The code below extracts the pixel value at position X Y. The... (3 Replies)
Discussion started by: StudentFitz
3 Replies

5. Shell Programming and Scripting

Arithmetic but keep 2 decimal places

I am trying to perform arithmetric, for example, to increment the value of variable $a (say 3) by 0.05 but when I tried the following expression let a=a+0.05 or a=$((a+0.05)) both returned 3.0499999999999998 I want to keep 2 decimal places so it returns 3.05 instead. (6 Replies)
Discussion started by: piynik
6 Replies

6. Shell Programming and Scripting

Bash Rounding to 2 decimal places

I have a number in a bash variable n, and want to round it to 2 decimal places. How can I do that? n=0.0867268 Need to have num=0.09 (1 Reply)
Discussion started by: kristinu
1 Replies

7. Shell Programming and Scripting

How to round up value upto 2 decimal places using sed?

Please help me in rounding up value upto 2 decimal palces using sed command #!/usr/bin/bash a=15.42 b=13.33 c=`echo $a*$b |bc -l` echo $c above code is is giving output "205.5486" but i want the output as "205.55" Thank you... (15 Replies)
Discussion started by: ranabhavish
15 Replies

8. Shell Programming and Scripting

Printing with decimal places from last 4 digits

I have input file like below, 201424|9999|OSS|622010|RGT|00378228764 201424|8888|OM|587079|RGT|00284329675 201424|7777|OM|587076|RGT|00128671024 201424|6666|OM|581528|RGT|00113552084 Output should be like below, should add decimal (.) from last 4 digits. ... (2 Replies)
Discussion started by: vinothsekark
2 Replies

9. Shell Programming and Scripting

Sum the fields with 6 decimal places - getting only 2 decimal places as output

I used the below script to Sum up a field in a file based on some unique values. But the problem is when it is summing up the units, it is truncating to 2 decimals and not 6 decimals as in the input file (Input file has the units with up to 6 Decimals – Sample data below, when the units in the 2... (4 Replies)
Discussion started by: brlsubbu
4 Replies
XDIFF_STRING_PATCH(3)							 1						     XDIFF_STRING_PATCH(3)

xdiff_string_patch - Patch a string with an unified diff

SYNOPSIS
string xdiff_string_patch (string $str, string $patch, [int $flags], [string &$error]) DESCRIPTION
Patches a $str string with an unified patch in $patch parameter and returns the result. $patch has to be an unified diff created by xdiff_file_diff(3)/xdiff_string_diff(3) function. An optional $flags parameter specifies mode of operation. Any rejected parts of the patch will be stored inside $error variable if it is provided. PARAMETERS
o $str - The original string. o $patch - The unified patch string. It has to be created using xdiff_string_diff(3), xdiff_file_diff(3) functions or compatible tools. o $flags -$flags can be either XDIFF_PATCH_NORMAL (default mode, normal patch) or XDIFF_PATCH_REVERSE (reversed patch). Starting from ver- sion 1.5.0, you can also use binary OR to enable XDIFF_PATCH_IGNORESPACE flag. o $error - If provided then rejected parts are stored inside this variable. RETURN VALUES
Returns the patched string, or FALSE on error. EXAMPLES
Example #1 xdiff_string_patch(3) example The following code applies changes to some article. <?php $old_article = file_get_contents('./old_article.txt'); $diff = $_SERVER['patch']; /* Let's say that someone pasted a patch to html form */ $errors = ''; $new_article = xdiff_string_patch($old_article, $diff, XDIFF_PATCH_NORMAL, $errors); if (is_string($new_article)) { echo "New article: "; echo $new_article; } if (strlen($errors)) { echo "Rejects: "; echo $errors; } ?> SEE ALSO
xdiff_string_diff(3). PHP Documentation Group XDIFF_STRING_PATCH(3)
All times are GMT -4. The time now is 01:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy