Apologies for the delay, I am a carer or babysitter presently for my mother or grandchild and dogs.
However @ Corona688...
Well tested your 'BASH' version with just one edge case and there will be quite a few...
Note with your original, 2.0 - 3.14159 = -1.141, not what is shown.
Then I just did one edge case, I changed '2.0' to '0.073' and...
NOTE: Not related to either your or my versions; I have manually found many edgecases. Python was a godsend for this task.
Code:
Last login: Fri Nov 23 21:29:04 on ttys000
AMIGA:amiga~> cd Desktop/Code/Shell
AMIGA:amiga~/Desktop/Code/Shell> ./FPMATH_C688.sh
3.14159 * 2.0 = 6.282
3.14159 / 2.0 = 1.570
2.0 - 3.14159 = 1.141 # WRONG! -1.141
3.14159 - 2.0 = 1.141
3.14159 + 2.0 = 5.141
AMIGA:amiga~/Desktop/Code/Shell> # Just one edge case, change BB to 0.073.
AMIGA:amiga~/Desktop/Code/Shell> ./FPMATH_C688.sh
3.14159 * 0.073 = 0.185
3.14159 / 0.073 = 53.237
0.073 - 3.14159 = 3.082
3.14159 - 0.073 = 3.082
3.14159 + 0.073 = 3.200
AMIGA:amiga~/Desktop/Code/Shell> # Oops, they are all wrong.
AMIGA:amiga~/Desktop/Code/Shell> _
As I said I have learnt a lot about 'dash' and POSIX. Your 'heredoc' code is wonderful.
As above I have found many edge cases.
Also the strange effects closing the gaps to the + or - limits I have set.
I will be back ASAP but family comes first.
Last edited by wisecracker; 11-24-2018 at 05:37 AM..
Reason: Correct grammar.
There was a bug in my version above. Arithmetic involving negative numbers worked, the edge case was the display of them. One 'edge' was that I completely forgot to display the sign, at all, ever. Still trying to fix the 0.073 problem.
Code:
DP=3
MOD=1000
function ftofix { # ftofix OUTPUTNAME "3.14"
_VAR="$1"
_OLDIFS="$IFS"
IFS="."
set -- $2 # Set $1, $2, etc, splitting on "."
IFS="$_OLDIFS"
local FRAC=$2
local _N=$1
[[ "${_N}" = "0" ]] && _N=""
[[ "${_N}" = "-0" ]] && _N="-"
for((X=0; X<DP; X++))
do
D="${FRAC:$X:1}"
[[ -z "$D" ]] && D="0"
_N="${_N}$D" # Prepend digits to N
done
read $_VAR <<EOF
${_N}
EOF
}
function fixtof {
_VAR="$1"
_N="$2"
_SIGN=""
((_N<0)) && _SIGN="-" && ((_N=-_N))
_S=`printf "%s%d.%0${DP}d" "${_SIGN}" $((_N/MOD)) $((_N%MOD))`
read $_VAR <<EOF
$_S
EOF
}
AA="3.14159"
BB="-2.0"
ftofix A $AA
ftofix B $BB
# Multiplcation
fixtof CC $(((A*B)/MOD))
echo "$AA * $BB = $CC"
# Division
fixtof DD $(( (A*MOD)/B ))
echo "$AA / $BB = $DD"
# Addition and Subtraction
fixtof EE $(( B - A ))
echo "$BB - $AA = $EE"
fixtof FF $(( A - B ))
echo "$AA - $BB = $FF"
fixtof GG $(( A + B ))
echo "$AA + $BB = $GG"
This edge case works on my version...
I have limited my decimal point to 9 decimal places BUT note the non-zero digits start at the 10th decimal place:
Code:
Last login: Wed Dec 12 06:48:08 on console
AMIGA:amiga~> cd Desktop/Code/Shell
AMIGA:amiga~/Desktop/Code/Shell> ./calc .000000000123 + .0000000007
+0.000000001
AMIGA:amiga~/Desktop/Code/Shell> ./calc .000000000923 + .000000000739
+0.000000002
AMIGA:amiga~/Desktop/Code/Shell> ./calc .000000000123 + .000000000123
+0.000000000
AMIGA:amiga~/Desktop/Code/Shell> _
I have certainly discovered that it is more difficult than I expected. There is at least one division edge case that is not straightforwards.
As I stated before python 2.x or 3.x was my friend here...
But yours in 'bash' gives...
I have changed 'AA' and 'BB' to:
Code:
AA=0.000945
BB=0.000789
There are other edge cases.
Ignoring the divide case as that is an edge case in itself and is different from the one mentioned above.
Code:
Last login: Wed Dec 12 13:02:10 on ttys000
AMIGA:amiga~> cd Desktop/Code/Shell
AMIGA:amiga~/Desktop/Code/Shell> ./FPMATH_C688.sh
0.000945 * 0.000789 = 0.000
./FPMATH_C688.sh: line 54: (A*MOD)/B : division by 0 (error token is " ")
0.000945 / 0.000789 =
0.000789 - 0.000945 = 0.000
0.000945 - 0.000789 = 0.000
0.000945 + 0.000789 = 0.000
AMIGA:amiga~/Desktop/Code/Shell> _
This is getting more difficult by the version.
--- Post updated at 01:28 PM ---
Hi C688...
Your mandlebrot probably won't work on the AMIGA, period, as there is no bash for it, only ksh88.
Nevertheless it looks cool.
Off to try it out on this machine...
OSX 10.14.1, default bash terminal.
I'll be back to let you know...
Last edited by wisecracker; 12-12-2018 at 09:59 AM..
Reason: Move one text line further down.
Well, guys I saw a question about GOTO for Python.
So this gave me the inspiration to attempt a GOTO function for 'dash', (bash and ksh too).
Machine: MBP OSX 10.14.3, default bash terminal, calling '#!/usr/local/bin/dash'...
This is purely a fun project to see if it is possible in PURE... (3 Replies)
How to create a new mount point with 600GB and add 350 GBexisting mount point
Best if there step that i can follow or execute before i mount or add diskspace IN AIX
Thanks (2 Replies)
Hey all! :)
I'm trying to create a fixed mount point for an usb cardreader.
I've found a script on a raspberry pi forum which does the following:
usb stick is plugged in -> script checks the mount point for data -> script starts copying the files automatically -> script unmounts the... (0 Replies)
Discussion started by: Eomer
0 Replies
4. Post Here to Contact Site Administrators and Moderators
HI Everyone,
I have below source file
AAA|NAME1|ADDRESS1|300.20
BBB|NAME2|ADDRESS2|400.31
CCC|NAME3|ADDRESS3|300.34
I have requirement where I need to sum up fourth field in above fixed width pipe delimited flat file. When I use below code, it gives me value 1001.00
But I am expecting... (1 Reply)
hi,
I would like to ask or is it possible to dump a hex using dd from starting point to end point just like the "xxd -s 512 -l 512 <bin file>"
I know the redirect hexdump -C but i can't figure it out the combination options of dd.
Hope someone can share their knowledge..
Thanks in... (3 Replies)
Hi!
I'm new in these forums and more or less new with Unix. So... here is the question:
does anyone know where is redirected the output of a command when you put >&- after it?
Does it means any standard file descriptor?
Thanks! (2 Replies)
Anyone know of a guide or instructions for Solaris
I got to configure a SBUS HBA to talk to a tape robot.
I have done this on a switch but not point to point.
just going HBA >>>>> TAPE Fibre simple two nodes
Kie (6 Replies)