Sponsored Content
Top Forums Shell Programming and Scripting Calculate the constant e to 14+ decimal places using integer maths. Post 303039736 by wisecracker on Monday 14th of October 2019 05:50:44 AM
Old 10-14-2019
Hi Neo...


No.
It is the WWW and the number of times people ask why 'x/y' gives an integer result instead of floating/fixed point result.

After exhaustive searching it looks like this site has these type of solutions now without the aid of awk, bc, dc and the rest.
I am trying to eliminate piping and subshells and use only POSIX shell, (dash), builtins only...

It is also the integer part combined with a POSIX shell that interests me not Taylor, Maclaurin or other series, as I have already done that here:
DFT using pure ksh ONLY!
Thanks to Corona688 for his maths expertise translating my naive maths coding.
But this is for ksh93 only and ksh93 HAS floating point arithmetic already making life easy.

That is why I now have turned to POSIX compliance only.
Inside the above code is Nth Root, Sin and Cos.
I don't think these are possible in a POSIX shell integer maths, but until I try I will not have found at least one limitation of shell scripting for my use.
It they are then they will only have limited decimal point accuracy to one or two decimal places.

This is my hobby, finding the limitations of a language, and boy, (floating/)fixed point arithmetic is one of them.
This is one reason why I have all but abandoned Python because it is SOOO flexible with all the modules available.
I am not even sure this is possible:
Minifloat - Wikipedia
But I will have a go at the 8 bit version knowing that I might fail...
 

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
ilogbd64(3M)															      ilogbd64(3M)

NAME
ilogbd64(), ilogbd128(), ilogbd32() - decimal exponent functions SYNOPSIS
DESCRIPTION
The function computes the exponent of the floating point value x. Formally, the return value is the integral part of log base 10 of |x| as a signed integer value, for nonzero x. If x is subnormal, it is treated as though it were normalized, before the exponent is determined. is equivalent to for all values of x is a version of it takes a argument. is a version of it takes a argument. These math functions are supported for HP-UX 11i Version 3 September 2008 Update and forward. USAGE
To use any of these functions, compile with the option. Make sure your program defines and then includes Link in the math library by specifying or on the linking command line. For more information, see the at the following site: RETURN VALUE
If x returns and raises the invalid floating-point exception. If x is zero, returns and raises the invalid floating-point exception. If x is NaN, returns and raises the invalid floating-point exception. ERRORS
If x is NaN, sets to If x is zero or infinite, sets to SEE ALSO
frexpd64(3M), logbd64(3M), scalbnd64(3M), scalblnd64(3M), math(5). STANDARDS CONFORMANCE
These functions conform to ISO/IEC TR 24732, "Extension for the programming language C to support decimal floating-point arithmetic". HP Integrity Server Only ilogbd64(3M)
All times are GMT -4. The time now is 06:20 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy