Trabb Pardo–Knuth algorithm: Difference between revisions

m
m (syntax highlighting fixup automation)
m (→‎{{header|Wren}}: Minor tidy)
 
(17 intermediate revisions by 9 users not shown)
Line 290:
1.0 : 6.0</pre>
 
=={{header|ASICAutoIt}}==
<syntaxhighlight lang="autoit">; Trabb Pardo–Knuth algorithm
; by James1337 (autoit.de)
; AutoIt Version: 3.3.8.1
 
Local $S, $i, $y
 
Do
$S = InputBox("Trabb Pardo–Knuth algorithm", "Please enter 11 numbers:", "1 2 3 4 5 6 7 8 9 10 11")
If @error Then Exit
$S = StringSplit($S, " ")
Until ($S[0] = 11)
 
For $i = 11 To 1 Step -1
$y = f($S[$i])
If ($y > 400) Then
ConsoleWrite("f(" & $S[$i] & ") = Overflow!" & @CRLF)
Else
ConsoleWrite("f(" & $S[$i] & ") = " & $y & @CRLF)
EndIf
Next
 
Func f($x)
Return Sqrt(Abs($x)) + 5*$x^3
EndFunc</syntaxhighlight>
{{out}}
<pre>Input: "1 2 3 4 5 6 7 8 9 10 11"
 
f(11) = Overflow!
f(10) = Overflow!
f(9) = Overflow!
f(8) = Overflow!
f(7) = Overflow!
f(6) = Overflow!
f(5) = Overflow!
f(4) = 322
f(3) = 136.732050807569
f(2) = 41.4142135623731
f(1) = 6</pre>
 
=={{header|AutoHotkey}}==
<syntaxhighlight lang="autohotkey">seq := [1,2,3,4,5,6,7,8,9,10,11]
MsgBox % result := TPK(seq, 400)
return
 
TPK(s, num){
for i, v in reverse(s)
res .= v . " : " . ((x:=f(v)) > num ? "OVERFLOW" : x ) . "`n"
return res
}
reverse(s){
Loop % s.Count()
s.InsertAt(A_Index, s.pop())
return s
}
f(x){
return Sqrt(x) + 5* (x**3)
}</syntaxhighlight>
{{out}}
<pre>11 : OVERFLOW
10 : OVERFLOW
9 : OVERFLOW
8 : OVERFLOW
7 : OVERFLOW
6 : OVERFLOW
5 : OVERFLOW
4 : 322.000000
3 : 136.732051
2 : 41.414214
1 : 6.000000</pre>
 
=={{header|AWK}}==
<syntaxhighlight lang="awk">
# syntax: GAWK -f TRABB_PARDO-KNUTH_ALGORITHM.AWK
BEGIN {
printf("enter 11 numbers: ")
getline S
n = split(S,arr," ")
if (n != 11) {
printf("%d numbers entered; S/B 11\n",n)
exit(1)
}
for (i=n; i>0; i--) {
x = f(arr[i])
printf("f(%s) = %s\n",arr[i],(x>400) ? "too large" : x)
}
exit(0)
}
function abs(x) { if (x >= 0) { return x } else { return -x } }
function f(x) { return sqrt(abs(x)) + 5 * x ^ 3 }
</syntaxhighlight>
{{out}}
<pre>
enter 11 numbers: 1 2 3 -4 5 6 -7 8 9 10 11
f(11) = too large
f(10) = too large
f(9) = too large
f(8) = too large
f(-7) = -1712.35
f(6) = too large
f(5) = too large
f(-4) = -318
f(3) = 136.732
f(2) = 41.4142
f(1) = 6
</pre>
 
=={{header|BASIC}}==
==={{header|ANSI BASIC}}===
{{trans|Commodere BASIC}}
{{works with|Decimal BASIC}}
<syntaxhighlight lang="basic">
100 REM Trabb Pardo-Knuth algorithm
110 REM Used "magic numbers" because of strict specification of the algorithm.
120 DEF FNF(N) = SQR(ABS(N)) + 5 * N * N * N
130 DIM S(0 TO 10)
140 PRINT "Enter 11 numbers."
150 FOR I = 0 TO 10
160 INPUT PROMPT STR$(I + 1) & ":": S(I)
170 NEXT I
180 PRINT
190 REM Reverse
200 FOR I = 0 TO INT(10 / 2)
210 LET Tmp = S(I)
220 LET S(I) = S(10 - I)
230 LET S(10 - I) = Tmp
240 NEXT I
250 REM Results
260 FOR I = 0 TO 10
270 LET R = FNF(S(I))
280 PRINT USING "f(####.###) = ": S(I);
290 IF R > 400 THEN
300 PRINT "overflow"
310 ELSE
320 PRINT USING "####.###": R
330 END IF
340 NEXT I
350 END
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1:-5
2:-3
3:-2
4:-1
5:0
6:1
7:2
8:3
9:4
10:5
11:6
 
f( 6.000) = overflow
f( 5.000) = overflow
f( 4.000) = 322.000
f( 3.000) = 136.732
f( 2.000) = 41.414
f( 1.000) = 6.000
f( .000) = .000
f( -1.000) = -4.000
f( -2.000) = -38.586
f( -3.000) = -133.268
f( -5.000) = -622.764
</pre>
 
==={{header|Applesoft BASIC}}===
{{works with|Chipmunk Basic}}
{{works with|GW-BASIC}}
<syntaxhighlight lang="qbasic">10 REM Trabb Pardo-Knuth algorithm
20 HOME : REM 20 CLS for Chipmunk Basic or GW-BASIC
30 DIM S(10)
40 PRINT "Enter 11 numbers."
50 FOR I = 0 TO 10
60 PRINT I+1;
70 INPUT "=> ";S(I)
80 NEXT I
90 PRINT
100 REM Results
110 FOR I = 10 TO 0 STEP -1
120 PRINT "f( " S(I)") = ";
130 F = S(I)
140 R = SQR(ABS(F))+5*F^3
150 IF R > 400 THEN PRINT "-=< overflow >=-"
160 IF R <= 400 THEN PRINT R
170 NEXT I
180 END</syntaxhighlight>
 
==={{header|ASIC}}===
{{works with|ASIC|5.0}} Compile with the option ''Decimal Math'' (<code>DEC</code> in command line).
Notes:
* ASIC does not have the fuction that calculates a square root. Thus, the program uses the added subprogram <code>CALCSQRT:</code>.
* ASIC does not scroll a text screen, but it wraps the text. Thus, the program clears the screen after the user enters numbers.
<syntaxhighlight lang="textbasic">
REM Trabb Pardo-Knuth algorithm
REM Used "magic numbers" because of strict specification of the algorithm.
Line 406 ⟶ 595:
</pre>
 
==={{header|AutoItBASIC256}}===
<syntaxhighlight lang="autoitbasic256">;dim Trabb Pardo–Knuth algorithms(11)
print 'enter 11 numbers'
; by James1337 (autoit.de)
for i = 0 to 10
; AutoIt Version: 3.3.8.1
input i + ">" , s[i]
next i
 
for i = 10 to 0 step -1
Local $S, $i, $y
print "f(" + s[i] + ")=";
x = f(s[i])
if x > 400 then
print "-=< overflow >=-"
else
print x
endif
next i
end
 
function f(n)
Do
return sqrt(abs(n))+5*n^3
$S = InputBox("Trabb Pardo–Knuth algorithm", "Please enter 11 numbers:", "1 2 3 4 5 6 7 8 9 10 11")
end function</syntaxhighlight>
If @error Then Exit
{{out}}
$S = StringSplit($S, " ")
<pre>enter 11 numbers
Until ($S[0] = 11)
0>-4
1>-3
2>-4
3>-2
4>-1
5>-
6>1
7>2
8>3
9>4
10>5
f(5)=--- too large ---
f(4)=322
f(3)=136.7320508
f(2)=41.4142136
f(1)=6
f(0)=0
f(-1)=-4
f(-2)=-38.5857864
f(-4)=-318
f(-3)=-133.2679492
f(-4)=-318</pre>
 
==={{header|Chipmunk Basic}}===
For $i = 11 To 1 Step -1
{{works with|Chipmunk Basic|3.6.4}}
$y = f($S[$i])
{{trans|BASIC256}}
If ($y > 400) Then
<syntaxhighlight lang="qbasic">10 rem Trabb Pardo-Knuth algorithm
ConsoleWrite("f(" & $S[$i] & ") = Overflow!" & @CRLF)
20 cls
Else
30 dim s(10)
ConsoleWrite("f(" & $S[$i] & ") = " & $y & @CRLF)
40 print "Enter 11 numbers."
EndIf
50 for i = 0 to 10
60 print i+1;
70 input "=> ";s(i)
80 next i
90 print
160 'Results
170 for i = 10 to 0 step -1
180 print "f( " s(i)") = ";
190 r = f(s(i))
200 if r > 400 then
210 print "-=< overflow >=-"
220 else
230 print r
240 endif
250 next i
260 end
270 function f(n)
280 f = sqr(abs(n))+5*n^3
290 return
</syntaxhighlight>
{{out}}
<pre>Same as BASIC256 entry.</pre>
 
==={{header|Commodore BASIC}}===
{{trans|XBasic}}
{{works with|Commodore BASIC|4.5}}
<syntaxhighlight lang="basic">
10 REM TRABB PARDO-KNUTH ALGORITHM
20 REM USED "MAGIC NUMBERS" BECAUSE OF STRICT SPECIFICATION OF THE ALGORITHM.
30 DEF FNF(N)=SQR(ABS(N))+5*N*N*N
40 DIM S(10)
50 PRINT "ENTER 11 NUMBERS."
60 FOR I=0 TO 10
70 PRINT STR$(I+1);
80 INPUT S(I)
90 NEXT I
100 PRINT
110 REM REVERSE
120 FOR I=0 TO 10/2
130 TMP=S(I)
140 S(I)=S(10-I)
150 S(10-I)=TMP
160 NEXT I
170 REM RESULTS
180 FOR I=0 TO 10
190 PRINT "F(";STR$(S(I));") =";
200 R=FNF(S(I))
210 IF R>400 THEN PRINT " OVERFLOW":ELSE PRINT R
220 NEXT I
230 END
</syntaxhighlight>
{{out}}
<pre>
ENTER 11 NUMBERS.
1? -5
2? -3
3? -2
4? -1
5? 0
6? 1
7? 2
8? 3
9? 4
10? 5
11? 6
 
F( 6) = OVERFLOW
F( 5) = OVERFLOW
F( 4) = 322
F( 3) = 136.732051
F( 2) = 41.4142136
F( 1) = 6
F( 0) = 0
F(-1) =-4
F(-2) =-38.5857864
F(-3) =-133.267949
F(-5) =-622.763932
</pre>
 
==={{header|FreeBASIC}}===
<syntaxhighlight lang="freebasic">' version 22-07-2017
' compile with: fbc -s console
 
Function f(n As Double) As Double
return Sqr(Abs(n)) + 5 * n ^ 3
End Function
 
' ------=< MAIN >=------
 
Dim As Double x, s(1 To 11)
Dim As Long i
 
For i = 1 To 11
Print Str(i);
Input " => ", s(i)
Next
 
Print
Func f($x)
Print String(20,"-")
Return Sqrt(Abs($x)) + 5*$x^3
 
EndFunc</syntaxhighlight>
i -= 1
Do
Print "f(" + Str(s(i)) + ") = ";
x = f(s(i))
If x > 400 Then
Print "-=< overflow >=-"
Else
Print x
End If
i -= 1
Loop Until i < 1
 
' empty keyboard buffer
While InKey <> "" : Wend
Print : Print "hit any key to end program"
Sleep
End</syntaxhighlight>
{{out}}
<pre>Input: "1 2 3 4=> -5 6 7 8 9 10 11"
2 => -3
3 => -2
4 => -1
5 => 0
6 => 1
7 => 2
8 => 3
9 => 4
10 => 5
11 => 6
 
--------------------
f(11) = Overflow!
f(106) = Overflow!-=< overflow >=-
f(95) = Overflow!-=< overflow >=-
f(84) = Overflow! 322
f(73) = Overflow! 136.7320508075689
f(62) = Overflow! 41.41421356237309
f(51) = Overflow! 6
f(40) = 322 0
f(3-1) = 136.732050807569-4
f(-2) = 41-38.414213562373158578643762691
f(1-3) = 6</pre>-133.2679491924311
f(-5) = -622.7639320225002</pre>
 
==={{header|AutoHotkeyFutureBasic}}===
<syntaxhighlight lang="autohotkeyfuturebasic">seq := [1,2,3,4,5,6,7,8,9,10,11]
// Trabb Pardo-Knuth algorithm
MsgBox % result := TPK(seq, 400)
return
 
include "NSLog.incl"
TPK(s, num){
 
for i, v in reverse(s)
local fn f( x as double ) as double
res .= v . " : " . ((x:=f(v)) > num ? "OVERFLOW" : x ) . "`n"
end fn = fn pow( abs(x), 0.5) + 5 * ( fn pow(x, 3) )
return res
 
}
void local fn PardoKnuth( userInput as double )
reverse(s){
double x = userInput
Loop % s.Count()
double y = fn f(x)
s.InsertAt(A_Index, s.pop())
NSLog( @"f(%.4f)\t= \b", x )
return s
if( y < 400.0 )
}
NSLog( @"%.4f", y )
f(x){
else
return Sqrt(x) + 5* (x**3)
NSLog( @"[Overflow]" )
}</syntaxhighlight>
end if
end fn
 
NSUInteger i
CFArrayRef numbers
 
numbers = @[@10, @-1, @1, @2, @3 ,@4, @4.3, @4.305, @4.303, @4.302, @4.301]
 
NSLog( @"Please enter 11 numbers:" )
for i = len(numbers) to 1 step -1
fn PardoKnuth( fn NumberDoubleValue( numbers[i-1] ) )
next
 
HandleEvents
</syntaxhighlight>
{{output}}
<pre>
Please enter 11 numbers:
f(4.3010) = 399.8863
f(4.3020) = [Overflow]
f(4.3030) = [Overflow]
f(4.3050) = [Overflow]
f(4.3000) = 399.6086
f(4.0000) = 322.0000
f(3.0000) = 136.7321
f(2.0000) = 41.4142
f(1.0000) = 6.0000
f(-1.0000) = -4.0000
f(10.0000) = [Overflow]
</pre>
 
=== {{header|GW-BASIC}} ===
{{trans|Commodore BASIC}}
{{works with|BASICA}}
<syntaxhighlight lang="gwbasic">
10 REM Trabb Pardo-Knuth algorithm
20 REM Used "magic numbers" because of strict specification of the algorithm.
30 DEF FNF(N) = SQR(ABS(N)) + 5 * N * N * N
40 DIM S(10)
50 PRINT "Enter 11 numbers."
60 FOR I% = 0 TO 10
70 PRINT STR$(I%+1);
80 INPUT S(I%)
90 NEXT I%
100 PRINT
110 REM Reverse
120 FOR I% = 0 TO 10 \ 2
130 TMP = S(I%): S(I%) = S(10 - I%): S(10 - I%) = TMP
160 NEXT I%
170 REM Results
180 FOR I% = 0 TO 10
190 PRINT "f(";STR$(S(I%));") =";
220 R = FNF(S(I%))
230 IF R > 400 THEN PRINT " overflow" ELSE PRINT R
240 NEXT I%
250 END
</syntaxhighlight>
{{out}}
<pre>11 : OVERFLOW
Enter 11 numbers.
10 : OVERFLOW
1? -5
9 : OVERFLOW
2? -3
8 : OVERFLOW
3? -2
7 : OVERFLOW
4? -1
6 : OVERFLOW
5? 0
5 : OVERFLOW
6? 1
4 : 322.000000
7? 2
3 : 136.732051
8? 3
2 : 41.414214
9? 4
1 : 6.000000</pre>
10? 5
11? 6
 
f( 6) = overflow
=={{header|AWK}}==
f( 5) = overflow
<syntaxhighlight lang="awk">
f( 4) = 322
# syntax: GAWK -f TRABB_PARDO-KNUTH_ALGORITHM.AWK
f( 3) = 136.7321
BEGIN {
f( 2) = 41.41422
printf("enter 11 numbers: ")
f( 1) = 6
getline S
f( 0) = 0
n = split(S,arr," ")
f(-1) =-4
if (n != 11) {
f(-2) =-38.58579
printf("%d numbers entered; S/B 11\n",n)
f(-3) =-133.268
exit(1)
f(-5) =-622.764
}
</pre>
for (i=n; i>0; i--) {
 
x = f(arr[i])
==={{header|Liberty BASIC}}===
printf("f(%s) = %s\n",arr[i],(x>400) ? "too large" : x)
{{trans|XBasic}}
}
{{works with|Just BASIC|any}}
exit(0)
<syntaxhighlight lang="lb">
}
' Trabb Pardo-Knuth algorithm
function abs(x) { if (x >= 0) { return x } else { return -x } }
' Used "magic numbers" because of strict specification of the algorithm.
function f(x) { return sqrt(abs(x)) + 5 * x ^ 3 }
dim s(10)
print "Enter 11 numbers."
for i = 0 to 10
print i + 1;
input " => "; s(i)
next i
print
' Reverse
for i = 0 to 10 / 2
tmp = s(i)
s(i) = s(10 - i)
s(10 - i) = tmp
next i
'Results
for i = 0 to 10
print "f("; s(i); ") = ";
r = f(s(i))
if r > 400 then
print "overflow"
else
print r
end if
next i
end
 
function f(n)
f = sqr(abs(n)) + 5 * n * n * n
end function
</syntaxhighlight>
{{out}}
<pre>
enterEnter 11 numbers: 1 2 3 -4 5 6 -7 8 9 10 11.
1 => -5
f(11) = too large
2 => -3
f(10) = too large
3 => -2
f(9) = too large
4 => -1
f(8) = too large
5 => 0
f(-7) = -1712.35
f(6) => too large1
7 => 2
f(5) = too large
f(-4)8 => -3183
9 => 4
f(3) = 136.732
10 => 5
f(2) = 41.4142
11 => 6
 
f(6) = overflow
f(5) = overflow
f(4) = 322
f(3) = 136.732051
f(2) = 41.4142136
f(1) = 6
f(0) = 0
f(-1) = -4
f(-2) = -38.5857864
f(-3) = -133.267949
f(-5) = -622.763932
</pre>
 
=={{header|BASIC}}==
==={{header|Minimal BASIC}}===
{{works with|QBasic}}
Line 545 ⟶ 987:
270 END
</syntaxhighlight>
 
==={{header|Nascom BASIC}}===
{{trans|Commodore BASIC}}
{{works with|Nascom ROM BASIC|4.7}}
<syntaxhighlight lang="basic">
10 REM Trabb Pardo-Knuth algorithm
20 REM Used "magic numbers" because of strict
30 REM specification of the algorithm.
40 DEF FNF(N)=SQR(ABS(N))+5*N*N*N
50 DIM S(10)
60 PRINT "Enter 11 numbers."
70 FOR I=0 TO 10
80 PRINT STR$(I+1);
90 INPUT S(I)
100 NEXT I
110 PRINT
120 REM ** Reverse
130 FOR I=0 TO 10/2
140 TMP=S(I)
150 S(I)=S(10-I)
160 S(10-I)=TMP
170 NEXT I
180 REM ** Results
190 FOR I=0 TO 10
200 PRINT "f(";STR$(S(I));") =";
210 R=FNF(S(I))
220 IF R>400 THEN PRINT " overflow":GOTO 240
230 PRINT R
240 NEXT I
250 END
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1? -5
2? -3
3? -2
4? -1
5? 0
6? 1
7? 2
8? 3
9? 4
10? 5
11? 6
 
f( 6) = overflow
f( 5) = overflow
f( 4) = 322
f( 3) = 136.732
f( 2) = 41.4142
f( 1) = 6
f( 0) = 0
f(-1) =-4
f(-2) =-38.5858
f(-3) =-133.268
f(-5) =-622.764
</pre>
 
==={{header|PureBasic}}===
<syntaxhighlight lang="purebasic">Procedure.d f(x.d)
ProcedureReturn Pow(Abs(x), 0.5) + 5 * x * x * x
EndProcedure
 
Procedure split(i.s, delimeter.s, List o.d())
Protected index = CountString(i, delimeter) + 1 ;add 1 because last entry will not have a delimeter
While index > 0
AddElement(o())
o() = ValD(Trim(StringField(i, index, delimeter)))
index - 1
Wend
 
ProcedureReturn ListSize(o())
EndProcedure
 
Define i$, entriesAreValid = 0, result.d, output$
NewList numbers.d()
 
If OpenConsole()
Repeat
PrintN(#crlf$ + "Enter eleven numbers that are each separated by spaces or commas:")
i$ = Input(
i$ = Trim(i$)
If split(i$, ",", numbers.d()) < 11
ClearList(numbers())
If split(i$, " ", numbers.d()) < 11
PrintN("Not enough numbers were supplied.")
ClearList(numbers())
Else
entriesAreValid = 1
EndIf
Else
entriesAreValid = 1
EndIf
Until entriesAreValid = 1
ForEach numbers()
output$ = "f(" + RTrim(RTrim(StrD(numbers(), 3), "0"), ".") + ") = "
result.d = f(numbers())
If result > 400
output$ + "Too Large"
Else
output$ + RTrim(RTrim(StrD(result, 3), "0"), ".")
EndIf
PrintN(output$)
Next
Print(#crlf$ + #crlf$ + "Press ENTER to exit"): Input()
CloseConsole()
EndIf</syntaxhighlight>
{{out}}
<pre>
Enter eleven numbers that are each separated by spaces or commas:
10, -1, 1, 2, 3, 4, 4.3, 4.305, 4.303, 4.302, 4.301
f(4.301) = 399.886
f(4.302) = Too Large
f(4.303) = Too Large
f(4.305) = Too Large
f(4.3) = 399.609
f(4) = 322
f(3) = 136.732
f(2) = 41.414
f(1) = 6
f(-1) = -4
f(10) = Too Large</pre>
 
==={{header|QBasic}}===
Line 573 ⟶ 1,142:
LOOP UNTIL i < 1
END</syntaxhighlight>
 
==={{header|Run BASIC}}===
{{works with|Just BASIC}}
{{works with|Liberty BASIC}}
<syntaxhighlight lang="vb">dim s(10)
print "Enter 11 numbers."
for i = 0 to 10
print i +1;
input " => "; s(i)
next i
print
'Results
for i = 10 to 0 step -1
print "f("; s(i); ") = ";
r = f(s(i))
if r > 400 then
print "-=< overflow >=-"
else
print r
end if
next i
end
 
function f(n)
f = sqr(abs(n)) + 5 * n * n * n
end function</syntaxhighlight>
{{out}}
<pre>Same as Liberty BASIC entry.</pre>
 
==={{header|Sinclair ZX81 BASIC}}===
Works with the unexpanded (1k RAM) ZX81
<syntaxhighlight lang="basic"> 10 DIM A(11)
20 PRINT "ENTER ELEVEN NUMBERS:"
30 FOR I=1 TO 11
40 INPUT A(I)
50 NEXT I
60 FOR I=11 TO 1 STEP -1
70 LET Y=SQR ABS A(I)+5*A(I)**3
80 IF Y<=400 THEN GOTO 110
90 PRINT A(I),"TOO LARGE"
100 GOTO 120
110 PRINT A(I),Y
120 NEXT I</syntaxhighlight>
{{out}}
<pre>ENTER ELEVEN NUMBERS:
2.8 111.43332
3.333 186.95529
1.01 6.1564926
2.55 84.503747
11 TOO LARGE
6 TOO LARGE
5 TOO LARGE
4 322
3 136.73205
2 41.414214
1 6</pre>
 
==={{header|True BASIC}}===
Line 602 ⟶ 1,227:
LOOP UNTIL i < 1
END</syntaxhighlight>
 
==={{header|VBScript}}===
<syntaxhighlight lang="vb">
Function tpk(s)
arr = Split(s," ")
For i = UBound(arr) To 0 Step -1
n = fx(CDbl(arr(i)))
If n > 400 Then
WScript.StdOut.WriteLine arr(i) & " = OVERFLOW"
Else
WScript.StdOut.WriteLine arr(i) & " = " & n
End If
Next
End Function
 
Function fx(x)
fx = Sqr(Abs(x))+5*x^3
End Function
 
'testing the function
WScript.StdOut.Write "Please enter a series of numbers:"
list = WScript.StdIn.ReadLine
tpk(list)
</syntaxhighlight>
 
{{Out}}
The number series was derived from the example of C.
<pre>
C:\>cscript /nologo tpk.vbs
Please enter 10 numbers:10 -1 1 2 3 4 4.3 4.305 4.303 4.302 4.301
4.301 = 399.886299747727
4.302 = OVERFLOW
4.303 = OVERFLOW
4.305 = OVERFLOW
4.3 = 399.608644135333
4 = 322
3 = 136.732050807569
2 = 41.4142135623731
1 = 6
-1 = -4
10 = OVERFLOW
</pre>
 
==={{header|XBasic}}===
{{works with|Windows XBasic}}
<syntaxhighlight lang="xbasic">
' Trabb Pardo-Knuth algorithm
PROGRAM "tpkalgorithm"
VERSION "0.0001"
 
IMPORT "xma"
 
DECLARE FUNCTION Entry ()
INTERNAL FUNCTION SINGLE F(SINGLE n)
 
FUNCTION Entry ()
' Used "magic numbers" because of strict specification of the algorithm.
SINGLE s[10]
SINGLE tmp, r
UBYTE i
PRINT "Enter 11 numbers."
FOR i = 0 TO 10
PRINT i + 1;
s[i] = SINGLE(INLINE$(" => "))
NEXT i
PRINT
' Reverse
FOR i = 0 TO 10 / 2
tmp = s[i]
s[i] = s[10 - i]
s[10 - i] = tmp
NEXT i
'Results
FOR i = 0 TO 10
PRINT "f("; LTRIM$(STR$(s[i])); ") =";
r = F(s[i])
IF r > 400 THEN
PRINT " overflow"
ELSE
PRINT r
END IF
NEXT i
END FUNCTION
 
FUNCTION SINGLE F(SINGLE n)
RETURN SQRT(ABS(n)) + 5 * n * n *n
END FUNCTION
END PROGRAM
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1 => -5
2 => -3
3 => -2
4 => -1
5 => 0
6 => 1
7 => 2
8 => 3
9 => 4
10 => 5
11 => 6
 
f(6) = overflow
f(5) = overflow
f(4) = 322
f(3) = 136.732
f(2) = 41.4142
f(1) = 6
f(0) = 0
f(-1) =-4
f(-2) =-38.5858
f(-3) =-133.268
f(-5) =-622.764
</pre>
 
==={{header|Yabasic}}===
Line 626 ⟶ 1,367:
next i
end</syntaxhighlight>
 
=={{header|BASIC256}}==
<syntaxhighlight lang="basic256">dim s(11)
print 'enter 11 numbers'
for i = 0 to 10
input i + ">" , s[i]
next i
 
for i = 10 to 0 step -1
print "f(" + s[i] + ")=";
x = f(s[i])
if x > 400 then
print "-=< overflow >=-"
else
print x
endif
next i
end
 
function f(n)
return sqrt(abs(n))+5*n^3
end function</syntaxhighlight>
{{out}}
<pre>enter 11 numbers
0>-4
1>-3
2>-4
3>-2
4>-1
5>-
6>1
7>2
8>3
9>4
10>5
f(5)=--- too large ---
f(4)=322
f(3)=136.7320508
f(2)=41.4142136
f(1)=6
f(0)=0
f(-1)=-4
f(-2)=-38.5857864
f(-4)=-318
f(-3)=-133.2679492
f(-4)=-318</pre>
 
=={{header|C}}==
Line 781 ⟶ 1,476:
f( 2 ) : 41.4142 !
f( 1 ) : 6 !</pre>
 
=={{header|Commodore BASIC}}==
{{trans|XBasic}}
{{works with|Commodore BASIC|4.5}}
<syntaxhighlight lang="basic">
10 REM TRABB PARDO-KNUTH ALGORITHM
20 REM USED "MAGIC NUMBERS" BECAUSE OF STRICT SPECIFICATION OF THE ALGORITHM.
30 DEF FNF(N)=SQR(ABS(N))+5*N*N*N
40 DIM S(10)
50 PRINT "ENTER 11 NUMBERS."
60 FOR I=0 TO 10
70 PRINT STR$(I+1);
80 INPUT S(I)
90 NEXT I
100 PRINT
110 REM REVERSE
120 FOR I=0 TO 10/2
130 TMP=S(I)
140 S(I)=S(10-I)
150 S(10-I)=TMP
160 NEXT I
170 REM RESULTS
180 FOR I=0 TO 10
190 PRINT "F(";STR$(S(I));") =";
200 R=FNF(S(I))
210 IF R>400 THEN PRINT " OVERFLOW":ELSE PRINT R
220 NEXT I
230 END
</syntaxhighlight>
{{out}}
<pre>
ENTER 11 NUMBERS.
1? -5
2? -3
3? -2
4? -1
5? 0
6? 1
7? 2
8? 3
9? 4
10? 5
11? 6
 
F( 6) = OVERFLOW
F( 5) = OVERFLOW
F( 4) = 322
F( 3) = 136.732051
F( 2) = 41.4142136
F( 1) = 6
F( 0) = 0
F(-1) =-4
F(-2) =-38.5857864
F(-3) =-133.267949
F(-5) =-622.763932
</pre>
 
=={{header|Common Lisp}}==
Line 904 ⟶ 1,543:
f(2.000) = 41.4142
f(1.000) = 6</pre>
 
=={{header|Delphi}}==
{{works with|Delphi|6.0}}
{{libheader|SysUtils,StdCtrls}}
 
 
<syntaxhighlight lang="Delphi">
 
procedure DoPardoKnuth(Memo: TMemo; A: array of double);
var Y: double;
var I: integer;
var S: string;
 
function Func(T: double): double;
begin
Result:=Sqrt(abs(T))+ 5*T*T*T;
end;
 
begin
for I:=0 to High(A) do
begin
Y:=Func(A[I]);
if y > 400 then S:='Too Large'
else S:=Format('%f %f',[A[I],Y]);
Memo.Lines.Add(S);
end;
end;
 
procedure ShowPardoKnuth(Memo: TMemo);
begin
DoPardoKnuth(Memo, [1,2,3,4,5,6,7,8,9,10,11]);
end;
 
 
</syntaxhighlight>
{{out}}
<pre>
1.00 6.00
2.00 41.41
3.00 136.73
4.00 322.00
Too Large
Too Large
Too Large
Too Large
Too Large
Too Large
Too Large
Elapsed Time: 12.547 ms.
</pre>
 
 
=={{header|EasyLang}}==
<syntaxhighlight>
print "Please enter 11 numbers :"
n[] = number strsplit input " "
print ""
print "Evaluating f(x) = |x|^0.5 + 5x^3 for the given inputs :"
for i = len n[] downto 1
r = sqrt abs n[i] + 5 * pow n[i] 3
write "f(" & n[i] & ") = "
if r > 400
print "Overflow!"
else
print r
.
.
# without this section, the input is interactive
input_data
10 -1 1 2 3 4 4.3 4.31 4.32 4.32 4.29
</syntaxhighlight>
 
=={{header|EchoLisp}}==
Line 1,006 ⟶ 1,716:
=={{header|Elena}}==
{{trans|C}}
ELENA 56.0x :
<syntaxhighlight lang="elena">import extensions;
import extensions'math;
Line 1,014 ⟶ 1,724:
real[] inputs := new real[](11);
console.printLine("Please enter 11 numbers :");
for(int i := 0,; i < 11,; i += 1)
{
inputs[i] := console.readLine().toReal()
Line 1,020 ⟶ 1,730:
console.printLine("Evaluating f(x) = |x|^0.5 + 5x^3 for the given inputs :");
for(int i := 10,; i >= 0,; i -= 1)
{
real result := sqrt(abs(inputs[i])) + 5 * power(inputs[i], 3);
Line 1,403 ⟶ 2,113:
STOP 0 TPK00160
</syntaxhighlight>
 
=={{header|FreeBASIC}}==
<syntaxhighlight lang="freebasic">' version 22-07-2017
' compile with: fbc -s console
 
Function f(n As Double) As Double
return Sqr(Abs(n)) + 5 * n ^ 3
End Function
 
' ------=< MAIN >=------
 
Dim As Double x, s(1 To 11)
Dim As Long i
 
For i = 1 To 11
Print Str(i);
Input " => ", s(i)
Next
 
Print
Print String(20,"-")
 
i -= 1
Do
Print "f(" + Str(s(i)) + ") = ";
x = f(s(i))
If x > 400 Then
Print "-=< overflow >=-"
Else
Print x
End If
i -= 1
Loop Until i < 1
 
' empty keyboard buffer
While InKey <> "" : Wend
Print : Print "hit any key to end program"
Sleep
End</syntaxhighlight>
{{out}}
<pre>1 => -5
2 => -3
3 => -2
4 => -1
5 => 0
6 => 1
7 => 2
8 => 3
9 => 4
10 => 5
11 => 6
 
--------------------
f(6) = -=< overflow >=-
f(5) = -=< overflow >=-
f(4) = 322
f(3) = 136.7320508075689
f(2) = 41.41421356237309
f(1) = 6
f(0) = 0
f(-1) = -4
f(-2) = -38.58578643762691
f(-3) = -133.2679491924311
f(-5) = -622.7639320225002</pre>
 
=={{header|Go}}==
Line 2,071 ⟶ 2,717:
-4
Overflow</pre>
 
=={{header|Liberty BASIC}}==
{{trans|XBasic}}
{{works with|Just BASIC|any}}
<syntaxhighlight lang="lb">
' Trabb Pardo-Knuth algorithm
' Used "magic numbers" because of strict specification of the algorithm.
dim s(10)
print "Enter 11 numbers."
for i = 0 to 10
print i + 1;
input " => "; s(i)
next i
print
' Reverse
for i = 0 to 10 / 2
tmp = s(i)
s(i) = s(10 - i)
s(10 - i) = tmp
next i
'Results
for i = 0 to 10
print "f("; s(i); ") = ";
r = f(s(i))
if r > 400 then
print "overflow"
else
print r
end if
next i
end
 
function f(n)
f = sqr(abs(n)) + 5 * n * n * n
end function
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1 => -5
2 => -3
3 => -2
4 => -1
5 => 0
6 => 1
7 => 2
8 => 3
9 => 4
10 => 5
11 => 6
 
f(6) = overflow
f(5) = overflow
f(4) = 322
f(3) = 136.732051
f(2) = 41.4142136
f(1) = 6
f(0) = 0
f(-1) = -4
f(-2) = -38.5857864
f(-3) = -133.267949
f(-5) = -622.763932
</pre>
 
=={{header|Lua}}==
Line 2,362 ⟶ 2,945:
f[1.18367]= 9.38004
f[0.470145]= 1.20527
</pre>
 
=={{header|MATLAB}}==
{{trans|Julia}}
<syntaxhighlight lang="MATLAB}}">
clear all;close all;clc;
 
% Define the function f(x)
f = @(x) sqrt(abs(x)) + 5 * x^3;
 
% Read a line of input, split it into elements, convert to numbers
inputLine = input('', 's');
numbers = str2double(strsplit(inputLine));
 
% Process each number in reverse order
for i = length(numbers):-1:1
value = f(numbers(i));
if value > 400
fprintf('%g: TOO LARGE\n', numbers(i));
else
fprintf('%g: %g\n', numbers(i), value);
end
end
</syntaxhighlight>
{{out}}
<pre>
1 2 3 4 5 6 7 8 9 10 11
11: TOO LARGE
10: TOO LARGE
9: TOO LARGE
8: TOO LARGE
7: TOO LARGE
6: TOO LARGE
5: TOO LARGE
4: 322
3: 136.732
2: 41.4142
1: 6
</pre>
 
Line 2,398 ⟶ 3,019:
</pre>
 
=={{header|Nascom BASICModula-2}}==
{{works with|ADW Modula-2|any (Compile with the linker option ''Console Application'').}}
{{trans|Commodore BASIC}}
<syntaxhighlight lang="modula2">
{{works with|Nascom ROM BASIC|4.7}}
MODULE TrabbPardoKnuth;
<syntaxhighlight lang="basic">
 
10 REM Trabb Pardo-Knuth algorithm
FROM STextIO IMPORT
20 REM Used "magic numbers" because of strict
SkipLine, WriteString, WriteLn;
30 REM specification of the algorithm.
FROM SRealIO IMPORT
40 DEF FNF(N)=SQR(ABS(N))+5*N*N*N
ReadReal, WriteFixed;
50 DIM S(10)
FROM SWholeIO IMPORT
60 PRINT "Enter 11 numbers."
WriteInt;
70 FOR I=0 TO 10
FROM RealMath IMPORT
80 PRINT STR$(I+1);
sqrt;
90 INPUT S(I)
 
100 NEXT I
CONST
110 PRINT
Size = 11;
120 REM ** Reverse
 
130 FOR I=0 TO 10/2
TYPE
140 TMP=S(I)
TSequence = ARRAY [1 .. Size] OF REAL;
150 S(I)=S(10-I)
 
160 S(10-I)=TMP
VAR
170 NEXT I
S: TSequence;
180 REM ** Results
I: CARDINAL;
190 FOR I=0 TO 10
Result: REAL;
200 PRINT "f(";STR$(S(I));") =";
 
210 R=FNF(S(I))
PROCEDURE ReverseSequence(VAR S: TSequence);
220 IF R>400 THEN PRINT " overflow":GOTO 240
VAR
230 PRINT R
I: CARDINAL;
240 NEXT I
Temp: REAL;
250 END
BEGIN
FOR I := 1 TO Size DIV 2 DO
Temp := S[I];
S[I] := S[Size - I + 1];
S[Size - I + 1] := Temp;
END;
END ReverseSequence;
 
PROCEDURE DoOperation(Item: REAL): REAL;
BEGIN
RETURN sqrt(ABS(Item)) + 5.0 * Item * Item * Item;
END DoOperation;
 
BEGIN
WriteString("Enter 11 numbers.");
WriteLn;
FOR I := 1 TO Size DO
WriteInt(I, 2);
WriteString(": ");
ReadReal(S[I]);
SkipLine
END;
ReverseSequence(S);
WriteLn;
FOR I := 1 TO Size DO
Result := DoOperation(S[I]);
WriteString("f(");
WriteFixed(S[I], 3, 8);
WriteString(") = ");
IF Result > 400.0 THEN
WriteString("overflow");
ELSE
WriteFixed(Result, 3, 8)
END;
WriteLn;
END;
END TrabbPardoKnuth.
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1?: -5
2?: -3
3?: -2
4?: -1
5?: 0
6?: 1
7?: 2
8?: 3
9?: 4
10?: 5
11?: 6
 
f( 6.000) = overflow
f( 5.000) = overflow
f( 4.000) = 322.000
f( 3.000) = 136.732
f( 2.000) = 41.4142414
f( 1.000) = 6.000
f( 0.000) = 0.000
f( -1.000) = -4.000
f( -2.000) = -38.5858586
f( -3.000) = -133.268
f( -5.000) = -622.764
</pre>
 
Line 2,734 ⟶ 3,392:
f(1.18367):9.38002
f(0.470145):1.20527
</pre>
 
=={{header|PHP}}==
<syntaxhighlight lang="php">
<?php
// Trabb Pardo-Knuth algorithm
// Used "magic numbers" because of strict specification of the algorithm.
 
function f($n)
{
return sqrt(abs($n)) + 5 * $n * $n * $n;
}
 
$sArray = [];
echo "Enter 11 numbers.\n";
for ($i = 0; $i <= 10; $i++) {
echo $i + 1, " - Enter number: ";
array_push($sArray, (float)fgets(STDIN));
}
echo PHP_EOL;
// Reverse
$sArray = array_reverse($sArray);
// Results
foreach ($sArray as $s) {
$r = f($s);
echo "f(", $s, ") = ";
if ($r > 400)
echo "overflow\n";
else
echo $r, PHP_EOL;
}
?>
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1 - Enter number: -5
2 - Enter number: -3
3 - Enter number: -2
4 - Enter number: -1
5 - Enter number: 0
6 - Enter number: 1
7 - Enter number: 2
8 - Enter number: 3
9 - Enter number: 4
10 - Enter number: 5
11 - Enter number: 6
 
f(6) = overflow
f(5) = overflow
f(4) = 322
f(3) = 136.73205080757
f(2) = 41.414213562373
f(1) = 6
f(0) = 0
f(-1) = -4
f(-2) = -38.585786437627
f(-3) = -133.26794919243
f(-5) = -622.7639320225
</pre>
 
Line 2,985 ⟶ 3,702:
4 322
</pre>
 
=={{header|PureBasic}}==
<syntaxhighlight lang="purebasic">Procedure.d f(x.d)
ProcedureReturn Pow(Abs(x), 0.5) + 5 * x * x * x
EndProcedure
 
Procedure split(i.s, delimeter.s, List o.d())
Protected index = CountString(i, delimeter) + 1 ;add 1 because last entry will not have a delimeter
While index > 0
AddElement(o())
o() = ValD(Trim(StringField(i, index, delimeter)))
index - 1
Wend
 
ProcedureReturn ListSize(o())
EndProcedure
 
Define i$, entriesAreValid = 0, result.d, output$
NewList numbers.d()
 
If OpenConsole()
Repeat
PrintN(#crlf$ + "Enter eleven numbers that are each separated by spaces or commas:")
i$ = Input(
i$ = Trim(i$)
If split(i$, ",", numbers.d()) < 11
ClearList(numbers())
If split(i$, " ", numbers.d()) < 11
PrintN("Not enough numbers were supplied.")
ClearList(numbers())
Else
entriesAreValid = 1
EndIf
Else
entriesAreValid = 1
EndIf
Until entriesAreValid = 1
ForEach numbers()
output$ = "f(" + RTrim(RTrim(StrD(numbers(), 3), "0"), ".") + ") = "
result.d = f(numbers())
If result > 400
output$ + "Too Large"
Else
output$ + RTrim(RTrim(StrD(result, 3), "0"), ".")
EndIf
PrintN(output$)
Next
Print(#crlf$ + #crlf$ + "Press ENTER to exit"): Input()
CloseConsole()
EndIf</syntaxhighlight>
{{out}}
<pre>
Enter eleven numbers that are each separated by spaces or commas:
10, -1, 1, 2, 3, 4, 4.3, 4.305, 4.303, 4.302, 4.301
f(4.301) = 399.886
f(4.302) = Too Large
f(4.303) = Too Large
f(4.305) = Too Large
f(4.3) = 399.609
f(4) = 322
f(3) = 136.732
f(2) = 41.414
f(1) = 6
f(-1) = -4
f(10) = Too Large</pre>
 
=={{header|Python}}==
Line 3,109 ⟶ 3,757:
f(532.0): overflow
f(1.0) = 6.0</pre>
 
=={{header|Quackery}}==
 
<syntaxhighlight lang="Quackery"> [ $ "bigrat.qky" loadfile ] now!
 
[ $->v drop
2dup vabs 10 vsqrt drop
2swap 2dup 2dup
v* v* 5 n->v v* v+ ] is function ( $ --> n/d )
 
[ $ "Please enter 11 numbers: "
input nest$
reverse
witheach
[ function
400 n->v 2over v< iff
[ 2drop say "overflow" ]
else
[ 7 point$ echo$ ]
sp ]
cr ] is task ( --> )</syntaxhighlight>
 
{{out}}
 
As a dialogue in the Quackery shell.
 
<pre>/O> task
...
Please enter 11 numbers: 10 -1 1 2 3 4 4.3 4.305 4.303 4.302 4.301
399.8862997 overflow overflow overflow 399.6086441 322 136.7320508 41.4142136 6 -4 overflow
</pre>
 
=={{header|R}}==
Line 3,338 ⟶ 4,017:
f(-5) = -622.764
 
</pre>
 
=={{header|RPL}}==
Idiomatic RPL is based on use of stack whenever possible, short code and minimalist UX.
{{works with|Halcyon Calc|4.2.7}}
{| class="wikitable"
! RPL code
! Comment
|-
|
≪ DUP ABS √ SWAP 3 ^ + ≫ ''''FUNC'''' STO
≪ "Push 11 numbers in stack, then CONT"
HALT 11 →LIST → s
≪ DROP 11 1
'''FOR''' j s j GET
'''FUNC'''
DUP 400 >
"Too large!"
ROT '''IFTE'''
-1 '''STEP'''
≫ ≫ ''''TPK'''' STO
|
'''FUNC''' ''( x -- sqrt(abs(x))+x^3 )''
'''TPK''' ''( -- report )''
ask for 11 numbers to be read into a sequence S
reverse sequence S
for each item in sequence S
call a function to do an operation
if result overflows
alert user
else print result
|}
<code>CONT</code> is not an instruction but a command, triggered by a specific keystroke.
On RPL versions used by HP-48 calculators and beyond, the first 2 lines of TPK can be replaced by
≪ { }
1 11 '''START''' "Enter a number" { "?" V } INPUT + '''NEXT''' → s
to slightly improve the collection of the 11 numbers, avoiding the need for the <code>CONT</code> command.
{{in}}
<pre>
TPK 100 3 0 1 0 1 0 1 0 1 10
</pre>
{{out}}
<pre>
11: "Too large!"
10: "28.7320508076"
9: "0"
8: "2"
7: "0"
6: "2"
5: "0"
4: "2"
3: "0"
2: "2"
1: "Too large!"
</pre>
 
Line 3,495 ⟶ 4,232:
10 Urk!
</pre>
 
=={{header|Sinclair ZX81 BASIC}}==
Works with the unexpanded (1k RAM) ZX81
<syntaxhighlight lang="basic"> 10 DIM A(11)
20 PRINT "ENTER ELEVEN NUMBERS:"
30 FOR I=1 TO 11
40 INPUT A(I)
50 NEXT I
60 FOR I=11 TO 1 STEP -1
70 LET Y=SQR ABS A(I)+5*A(I)**3
80 IF Y<=400 THEN GOTO 110
90 PRINT A(I),"TOO LARGE"
100 GOTO 120
110 PRINT A(I),Y
120 NEXT I</syntaxhighlight>
{{out}}
<pre>ENTER ELEVEN NUMBERS:
2.8 111.43332
3.333 186.95529
1.01 6.1564926
2.55 84.503747
11 TOO LARGE
6 TOO LARGE
5 TOO LARGE
4 322
3 136.73205
2 41.414214
1 6</pre>
 
=={{header|Swift}}==
Line 3,658 ⟶ 4,367:
1.0: 6.0
0.0: 0.0
</pre>
 
=={{header|VBScript}}==
<syntaxhighlight lang="vb">
Function tpk(s)
arr = Split(s," ")
For i = UBound(arr) To 0 Step -1
n = fx(CDbl(arr(i)))
If n > 400 Then
WScript.StdOut.WriteLine arr(i) & " = OVERFLOW"
Else
WScript.StdOut.WriteLine arr(i) & " = " & n
End If
Next
End Function
 
Function fx(x)
fx = Sqr(Abs(x))+5*x^3
End Function
 
'testing the function
WScript.StdOut.Write "Please enter a series of numbers:"
list = WScript.StdIn.ReadLine
tpk(list)
</syntaxhighlight>
 
{{Out}}
The number series was derived from the example of C.
<pre>
C:\>cscript /nologo tpk.vbs
Please enter 10 numbers:10 -1 1 2 3 4 4.3 4.305 4.303 4.302 4.301
4.301 = 399.886299747727
4.302 = OVERFLOW
4.303 = OVERFLOW
4.305 = OVERFLOW
4.3 = 399.608644135333
4 = 322
3 = 136.732050807569
2 = 41.4142135623731
1 = 6
-1 = -4
10 = OVERFLOW
</pre>
 
=={{header|Wren}}==
{{libheader|Wren-fmt}}
<syntaxhighlight lang="ecmascriptwren">import "io" for Stdin, Stdout
import "./fmt" for Fmt
 
var f = Fn.new { |x| x.abs.sqrt + 5*x*x*x }
Line 3,762 ⟶ 4,429:
f(-1.000) = -4.000
f(10.000) = overflow
</pre>
 
=={{header|XBasic}}==
{{works with|Windows XBasic}}
<syntaxhighlight lang="xbasic">
' Trabb Pardo-Knuth algorithm
PROGRAM "tpkalgorithm"
VERSION "0.0001"
 
IMPORT "xma"
 
DECLARE FUNCTION Entry ()
INTERNAL FUNCTION SINGLE F(SINGLE n)
 
FUNCTION Entry ()
' Used "magic numbers" because of strict specification of the algorithm.
SINGLE s[10]
SINGLE tmp, r
UBYTE i
PRINT "Enter 11 numbers."
FOR i = 0 TO 10
PRINT i + 1;
s[i] = SINGLE(INLINE$(" => "))
NEXT i
PRINT
' Reverse
FOR i = 0 TO 10 / 2
tmp = s[i]
s[i] = s[10 - i]
s[10 - i] = tmp
NEXT i
'Results
FOR i = 0 TO 10
PRINT "f("; LTRIM$(STR$(s[i])); ") =";
r = F(s[i])
IF r > 400 THEN
PRINT " overflow"
ELSE
PRINT r
END IF
NEXT i
END FUNCTION
 
FUNCTION SINGLE F(SINGLE n)
RETURN SQRT(ABS(n)) + 5 * n * n *n
END FUNCTION
END PROGRAM
</syntaxhighlight>
{{out}}
<pre>
Enter 11 numbers.
1 => -5
2 => -3
3 => -2
4 => -1
5 => 0
6 => 1
7 => 2
8 => 3
9 => 4
10 => 5
11 => 6
 
f(6) = overflow
f(5) = overflow
f(4) = 322
f(3) = 136.732
f(2) = 41.4142
f(1) = 6
f(0) = 0
f(-1) =-4
f(-2) =-38.5858
f(-3) =-133.268
f(-5) =-622.764
</pre>
 
9,482

edits