Sum of squares: Difference between revisions

m
→‎{{header|Wren}}: Changed to Wren S/H
m (→‎{{header|Raku}}: for clarity, enclose numeric list (two ways))
m (→‎{{header|Wren}}: Changed to Wren S/H)
 
(23 intermediate revisions by 11 users not shown)
Line 12:
 
=={{header|0815}}==
<langsyntaxhighlight lang="0815">
{x{*%<:d:~$<:1:~>><:2:~>><:3:~>><:4:~>><:5:~>><:6:~>><:7:
~>><:8:~>><:9:~>><:a:~>><:b:~>><:c:~>><:ffffffffffffffff:
~>{x{*>}:8f:{x{*&{=+>{~>&=x<:ffffffffffffffff:/#:8f:{{~%
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 24:
 
=={{header|11l}}==
<langsyntaxhighlight lang="11l">print(sum([1, 2, 3, 4, 5].map(x -> x^2)))</langsyntaxhighlight>
 
{{out}}
Line 32:
 
=={{header|360 Assembly}}==
<langsyntaxhighlight lang="360asm">* Sum of squares 27/08/2015
SUMOFSQR CSECT
USING SUMOFSQR,R12
Line 55:
N DC AL2((PG-A)/4)
YREGS
END SUMOFSQR</langsyntaxhighlight>
{{out}}
<pre>
Line 63:
=={{header|8086 Assembly}}==
 
<langsyntaxhighlight lang="asm"> ;;; Sum of squares
cpu 8086
bits 16
Line 117:
outstr_end: db '$'
array: dw 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
arrlen: equ ($-array)/2 ; length is in words</langsyntaxhighlight>
 
=={{header|ACL2}}==
<langsyntaxhighlight Lisplang="lisp">(defun sum-of-squares (xs)
(if (endp xs)
0
(+ (* (first xs) (first xs))
(sum-of-squares (rest xs)))))</langsyntaxhighlight>
 
=={{header|Action!}}==
<langsyntaxhighlight Actionlang="action!">CARD FUNC SumOfSqr(BYTE ARRAY a BYTE count)
BYTE i
CARD res
Line 169:
Test(c,1)
Test(c,0)
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Sum_of_squares.png Screenshot from Atari 8-bit computer]
Line 183:
 
=={{header|ActionScript}}==
<langsyntaxhighlight ActionScriptlang="actionscript">function sumOfSquares(vector:Vector.<Number>):Number
{
var sum:Number = 0;
Line 189:
sum += vector[i]*vector[i];
return sum;
}</langsyntaxhighlight>
 
=={{header|Ada}}==
<langsyntaxhighlight lang="ada">with Ada.Text_IO; use Ada.Text_IO;
 
procedure Test_Sum_Of_Squares is
Line 209:
Put_Line (Float'Image (Sum_Of_Squares ((1..0 => 1.0)))); -- Empty array
Put_Line (Float'Image (Sum_Of_Squares ((3.0, 1.0, 4.0, 1.0, 5.0, 9.0))));
end Test_Sum_Of_Squares;</langsyntaxhighlight>
{{out}}
<pre>
Line 217:
 
=={{header|Aime}}==
<langsyntaxhighlight lang="aime">real
squaredsum(list l)
{
Line 244:
 
0;
}</langsyntaxhighlight>
{{out}}
<pre>14
0
4.5</pre>
 
=={{header|ALGOL 60}}==
{{works with|GNU Marst|Any - tested with release 2.7}}
Using [[Jensen's Device]].
<syntaxhighlight lang="algol60">
begin
integer i;
integer array A[ 1 : 5 ];
real procedure sum (i, lo, hi, term);
value lo, hi;
integer i, lo, hi;
real term;
comment term is passed by-name, and so is i;
begin
real temp;
temp := 0;
for i := lo step 1 until hi do
temp := temp + term;
sum := temp
end;
comment initialie A;
for i := 1 step 1 until 5 do A[i] := i;
comment note the correspondence between the mathematical notation and the call to sum;
outreal(1, sum (i, 1, 5, A[i] * A[i]))
end
</syntaxhighlight>
 
=={{header|ALGOL 68}}==
Line 258 ⟶ 284:
 
The computation can be written as a loop.
<langsyntaxhighlight lang="algol68">PROC sum of squares = ([]REAL argv)REAL:(
REAL sum := 0;
FOR i FROM LWB argv TO UPB argv DO
Line 267 ⟶ 293:
test:(
printf(($g(0)l$,sum of squares([]REAL(3, 1, 4, 1, 5, 9))));
)</langsyntaxhighlight>
{{out}}
<pre>
Line 275 ⟶ 301:
 
{{trans|python}}
<langsyntaxhighlight lang="algol68">[]REAL data = (3, 1, 4, 1, 5, 9);
 
PROC map = ( PROC(REAL)REAL func, []REAL argv)REAL:
Line 290 ⟶ 316:
sum := 0;
printf(($g(0)l$, ((REAL argv)REAL: sum +:= argv ** 2) MAP data ))
)</langsyntaxhighlight>
{{out}}
<pre>
Line 302 ⟶ 328:
{{wont work with|ELLA ALGOL 68|Any (with appropriate job cards) - tested with release [http://sourceforge.net/projects/algol68/files/algol68toc/algol68toc-1.8.8d/algol68toc-1.8-8d.fc9.i386.rpm/download 1.8-8d]}}
The computation can be written as a generator.
<langsyntaxhighlight lang="algol68">#!/usr/bin/a68g --script #
# -*- coding: utf-8 -*- #
 
Line 345 ⟶ 371:
printf(($"SUMSQ GEN: "g(0)l$, SUMSQ GEN data));
printf(($"sq SUMMAP GEN: "g(0)l$, ((REAL x)REAL: x*x)SUMMAP GEN data))
)</langsyntaxhighlight>
{{out}}
<pre>
Line 357 ⟶ 383:
 
=={{header|ALGOL W}}==
 
<lang algolw>begin
===Using a dedicated % procedure to "sum the elements of a vector. As thesquares" procedure can't find %===
 
% the bounds of the array for itself, we pass them in lb and ub %
<syntaxhighlight lang="algolw">begin
% procedure to sum the squares of the elements of a vector. %
% the bounds of the vector must be passed in lb and ub %
real procedure sumSquares ( real array vector ( * )
; integer value lb
Line 376 ⟶ 405:
r_format := "A"; r_w := 10; r_d := 1; % set fixed point output %
write( sumSquares( numbers, 1, 5 ) );
end.</langsyntaxhighlight>
 
===Using Jensen's device===
{{Trans|ALGOL60}}
Using the classic [[Jensen's Device]] (first introduced in Algol 60) we can use a generic summation procedure, as in this sample:
 
<syntaxhighlight lang="algolw">
begin % sum the squares of the elements of a vector, using Jensen's Device %
integer i;
real procedure sum ( integer %name% i; integer value lo, hi; real procedure term );
% i is passed by-name, term is passed as a procedure which makes it effectively passed by-name %
begin
real temp;
temp := 0;
i := lo;
while i <= hi do begin % The Algol W "for" loop (as in Algol 68) creates a distinct %
temp := temp + term; % variable which would not be shared with the passed "i" %
i := i + 1 % Here the actual passed "i" is incremented. %
end while_i_le_temp;
temp
end;
real array A ( 1 :: 5 );
for i := 1 until 5 do A( i ) := i;
r_format := "A"; r_w := 10; r_d := 1; % set fixed point output %
write( sum( i, 1, 5, A( i ) * A( i ) ) );
end.
</syntaxhighlight>
 
=={{header|Alore}}==
 
<langsyntaxhighlight Alorelang="alore">def sum_squares(a)
var sum = 0
for i in a
Line 389 ⟶ 444:
 
WriteLn(sum_squares([3,1,4,1,5,9]))
end</langsyntaxhighlight>
 
=={{header|APL}}==
<langsyntaxhighlight lang="apl"> square_sum←{+/⍵*2}
square_sum 1 2 3 4 5
55
square_sum ⍬ ⍝The empty vector
0</langsyntaxhighlight>
 
=={{header|AppleScript}}==
 
Two ways of composing a sumOfSquares function:
<langsyntaxhighlight AppleScriptlang="applescript">------ TWO APPROACHES – SUM OVER MAP, AND DIRECT FOLD ----
 
-- sumOfSquares :: Num a => [a] -> a
Line 487 ⟶ 542:
foldl(add, 0, xs)
end sum</langsyntaxhighlight>
{{Out}}
<syntaxhighlight lang AppleScript="applescript">{133.0, 133.0}</langsyntaxhighlight>
 
=={{header|Arturo}}==
<langsyntaxhighlight lang="rebol">arr: 1..10
 
print sum map arr [x][x^2]</langsyntaxhighlight>
 
{{out}}
Line 501 ⟶ 556:
 
=={{header|Astro}}==
<langsyntaxhighlight lang="python">sum([1, 2, 3, 4]²)</langsyntaxhighlight>
 
=={{header|Asymptote}}==
<langsyntaxhighlight Asymptotelang="asymptote">int suma;
int[] a={1, 2, 3, 4, 5, 6};
Line 510 ⟶ 565:
suma = suma + a[i] ^ 2;
 
write("The sum of squares is: ", suma);</langsyntaxhighlight>
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight lang="autohotkey">list = 3 1 4 1 5 9
Loop, Parse, list, %A_Space%
sum += A_LoopField**2
MsgBox,% sum</langsyntaxhighlight>
 
=={{header|AWK}}==
Vectors are read, space-separated, from stdin; sum of squares goes to stdout. The empty line produces 0.
<langsyntaxhighlight lang="awk">$ awk '{s=0;for(i=1;i<=NF;i++)s+=$i*$i;print s}'
3 1 4 1 5 9
133
 
0</langsyntaxhighlight>
 
=={{header|BASIC}}==
{{works with|QBasic}}
Assume the numbers are in an array called <code>a</code>.
<langsyntaxhighlight lang="qbasic">sum = 0
FOR I = LBOUND(a) TO UBOUND(a)
sum = sum + a(I) ^ 2
NEXT I
PRINT "The sum of squares is: " + sum</langsyntaxhighlight>
 
==={{header|BaCon}}===
<langsyntaxhighlight lang="freebasic">' Sum of squares
FUNCTION ss(int arr[], NUMBER elem)
sum = 0
Line 557 ⟶ 612:
vector[i] = i + 1
NEXT
PRINT ss(vector, elem)</langsyntaxhighlight>
 
{{out}}
Line 566 ⟶ 621:
 
==={{header|BASIC256}}===
<langsyntaxhighlight BASIC256lang="basic256">arraybase 1
 
dim a(6)
Line 581 ⟶ 636:
next i
print "The sum of squares is: "; sum
end</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
BBC BASIC cannot have a zero-length array.
<langsyntaxhighlight lang="bbcbasic"> DIM vector(5)
vector() = 1, 2, 3, 4, 5, 6
PRINT "Sum of squares = " ; MOD(vector()) ^ 2</langsyntaxhighlight>
{{out}}
<pre>Sum of squares = 91</pre>
 
==={{header|IS-BASIC}}===
<langsyntaxhighlight ISlang="is-BASICbasic">100 INPUT PROMPT "Number of elements: ":N
110 NUMERIC A(1 TO N)
120 FOR I=1 TO N
Line 605 ⟶ 660:
200 NEXT
210 LET SQ=S
220 END DEF</langsyntaxhighlight>
 
==={{header|Yabasic}}===
<langsyntaxhighlight lang="yabasic">data 1.0, 2.0, 3.0, -1.0, -2.0, -3.0
dim a(5)
sum = 0
Line 617 ⟶ 672:
next i
print "The sum of squares is: ", sum
end</langsyntaxhighlight>
 
=={{header|bc}}==
<langsyntaxhighlight lang="bc">define s(a[], n) {
auto i, s
Line 628 ⟶ 683:
return(s)
}</langsyntaxhighlight>
 
=={{header|BCPL}}==
<langsyntaxhighlight lang="bcpl">get "libhdr"
 
let sumsquares(v, len) =
Line 640 ⟶ 695:
$( let vector = table 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
writef("%N*N", sumsquares(vector, 10))
$)</langsyntaxhighlight>
{{out}}
<pre>385</pre>
Line 646 ⟶ 701:
=={{header|BQN}}==
Similar to the BQN entry in [[Sum of a series]].
<langsyntaxhighlight lang="bqn">SSq ← +´√⁼
 
•Show SSq 1‿2‿3‿4‿5
•Show SSq ⟨⟩</langsyntaxhighlight>
<syntaxhighlight lang="text">55
0</langsyntaxhighlight>
=={{header|Bracmat}}==
<langsyntaxhighlight lang="bracmat">( ( sumOfSquares
= sum component
. 0:?sum
Line 665 ⟶ 720:
& out$(sumOfSquares$(3 4 i*5))
& out$(sumOfSquares$(a b c))
);</langsyntaxhighlight>
{{out}}
<pre>25
Line 672 ⟶ 727:
 
=={{header|Brat}}==
<langsyntaxhighlight lang="brat">p 1.to(10).reduce 0 { res, n | res = res + n ^ 2 } #Prints 385</langsyntaxhighlight>
 
=={{header|C}}==
 
<langsyntaxhighlight lang="c">#include <stdio.h>
 
double squaredsum(double *l, int e)
Line 694 ⟶ 749:
printf("%lf\n", squaredsum(NULL, 0));
return 0;
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
 
<langsyntaxhighlight lang="csharp">using System;
using System.Collections.Generic;
using System.Linq;
Line 714 ⟶ 769:
Console.WriteLine(SumOfSquares(new int[] { })); // 0
}
}</langsyntaxhighlight>
 
=={{header|C++}}==
===Using accumulate===
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <numeric>
#include <vector>
Line 743 ⟶ 798:
std::cout << vec_add_squares(v) << std::endl;
return 0;
}</langsyntaxhighlight>
===Using inner_product===
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <numeric>
#include <vector>
Line 760 ⟶ 815:
std::cout << std::inner_product(begin(v), end(v), begin(v), 0.0) << std::endl;
return 0;
}</langsyntaxhighlight>
 
===Using Boost.Lambda===
{{libheader|Boost.Lambda}}
<langsyntaxhighlight lang="cpp">#include <numeric>
#include <vector>
#include "boost/lambda/lambda.hpp"
Line 773 ⟶ 828:
 
return std::accumulate(v.begin(), v.end(), 0.0, _1 + _2 * _2);
}</langsyntaxhighlight>
 
=={{header|Chef}}==
<langsyntaxhighlight Cheflang="chef">Sum of squares.
 
First input is length of vector, then rest of input is vector.
Line 798 ⟶ 853:
Serves 1.
 
</syntaxhighlight>
</lang>
 
=={{header|Clojure}}==
<langsyntaxhighlight lang="clojure">(defn sum-of-squares [v]
(reduce #(+ %1 (* %2 %2)) 0 v))</langsyntaxhighlight>
 
=={{header|CLU}}==
<langsyntaxhighlight lang="clu">sum_squares = proc (ns: sequence[int]) returns (int)
sum: int := 0
for n: int in sequence[int]$elements(ns) do
Line 819 ⟶ 874:
stream$putl(po, int$unparse(sum_squares(sequence[int]$[1,2,3,4,5])))
stream$putl(po, int$unparse(sum_squares(sequence[int]$[42])))
end start_up</langsyntaxhighlight>
{{out}}
<pre>0
Line 826 ⟶ 881:
 
=={{header|CoffeeScript}}==
<langsyntaxhighlight lang="coffeescript">
sumOfSquares = ( list ) ->
list.reduce (( sum, x ) -> sum + ( x * x )), 0
</syntaxhighlight>
</lang>
 
=={{header|Common Lisp}}==
 
<langsyntaxhighlight lang="lisp">(defun sum-of-squares (vector)
(loop for x across vector sum (expt x 2)))</langsyntaxhighlight>
 
Or in a functional way:
<syntaxhighlight lang="lisp">(defun sum-of-squares (vec)
(reduce #'+ (map 'vector (lambda (x) (* x x)) vec)))</syntaxhighlight>
 
=={{header|Cowgol}}==
 
<langsyntaxhighlight lang="cowgol">include "cowgol.coh";
include "argv.coh";
 
Line 873 ⟶ 932:
# Print sum of squares of numbers
print_i32(sumsquare(&nums[0], len as intptr));
print_nl();</langsyntaxhighlight>
 
{{out}}
Line 886 ⟶ 945:
=={{header|Crystal}}==
 
<syntaxhighlight lang="ruby">
<lang Ruby>
def sum_squares(a)
a.map{|e| e*e}.sum()
Line 893 ⟶ 952:
puts sum_squares([1, 2, 3])
# => 14
</syntaxhighlight>
</lang>
 
=={{header|D}}==
===Iterative Version===
<langsyntaxhighlight lang="d">T sumSquares(T)(T[] a) pure nothrow @safe @nogc {
T sum = 0;
foreach (e; a)
Line 908 ⟶ 967:
 
[3.1, 1.0, 4.0, 1.0, 5.0, 9.0].sumSquares.writeln;
}</langsyntaxhighlight>
{{out}}
<pre>133.61</pre>
 
===Polymorphic Functional Style===
<langsyntaxhighlight lang="d">import std.stdio, std.algorithm, std.traits, std.range;
 
auto sumSquares(Range)(Range data) pure nothrow @safe @nogc {
Line 923 ⟶ 982:
items.sumSquares.writeln;
10.iota.sumSquares.writeln;
}</langsyntaxhighlight>
{{out}}
<pre>133.61
Line 930 ⟶ 989:
=={{header|Dart}}==
===Iterative Version===
<langsyntaxhighlight lang="d">sumOfSquares(list) {
var sum=0;
list.forEach((var n) { sum+=(n*n); });
Line 940 ⟶ 999:
print(sumOfSquares([1,2,3]));
print(sumOfSquares([10]));
}</langsyntaxhighlight>
{{out}}
<pre>0
Line 947 ⟶ 1,006:
 
===Functional Style Version===
<langsyntaxhighlight lang="d">num sumOfSquares(List<num> l) => l.map((num x)=>x*x)
.fold(0, (num p,num n)=> p + n);
 
Line 954 ⟶ 1,013:
print(sumOfSquares([1,2,3]));
print(sumOfSquares([10]));
}</langsyntaxhighlight>
{{out}}
<pre>0
Line 962 ⟶ 1,021:
=={{header|Delphi}}==
Delphi has standard SumOfSquares function in Math unit:
<langsyntaxhighlight Delphilang="delphi">program SumOfSq;
 
{$APPTYPE CONSOLE}
Line 982 ⟶ 1,041:
Writeln(SumOfSquares(A):6:2); // 30.00
Readln;
end.</langsyntaxhighlight>
 
=={{header|Draco}}==
<langsyntaxhighlight lang="draco">proc nonrec sum_squares([*] int arr) ulong:
ulong sum, item;
word i, len;
Line 1,007 ⟶ 1,066:
writeln(sum_squares(A1(42)));
writeln(sum_squares(A5(1,2,3,4,5)))
corp</langsyntaxhighlight>
{{out}}
<pre>0
Line 1,015 ⟶ 1,074:
=={{header|E}}==
 
<langsyntaxhighlight lang="e">def sumOfSquares(numbers) {
var sum := 0
for x in numbers {
Line 1,021 ⟶ 1,080:
}
return sum
}</langsyntaxhighlight>
 
=={{header|EasyLang}}==
 
<syntaxhighlight lang="easylang">
nums[] = [ 1 2 3 4 5 ]
for v in nums[]
sum += v * v
.
print sum
</syntaxhighlight>
 
=={{header|Eiffel}}==
 
<syntaxhighlight lang="eiffel">
<lang Eiffel>
class
APPLICATION
Line 1,057 ⟶ 1,126:
 
end
</syntaxhighlight>
</lang>
 
=={{header|Elena}}==
ELENA 56.0x :
<langsyntaxhighlight lang="elena">import system'routines;
import extensions;
SumOfSquares(list)
= list.selectBy::(x => x * x).summarize(new Integer());
public program()
Line 1,073 ⟶ 1,142:
.printLine(SumOfSquares(new int[]{1, 2, 3, 4, 5}))
.printLine(SumOfSquares(Array.MinValue))
}</langsyntaxhighlight>
{{out}}
<pre>
Line 1,082 ⟶ 1,151:
 
=={{header|Elixir}}==
<langsyntaxhighlight lang="elixir">iex(1)> Enum.reduce([3,1,4,1,5,9], 0, fn x,sum -> sum + x*x end)
133</langsyntaxhighlight>
 
=={{header|Emacs Lisp}}==
<langsyntaxhighlight Lisplang="lisp">(defun sum-of-squares (numbers)
(apply #'+ (mapcar (lambda (k) (* k k)) numbers)))
 
(sum-of-squares (number-sequence 0 3)) ;=> 14</langsyntaxhighlight>
 
=={{header|Erlang}}==
<langsyntaxhighlight lang="erlang">lists:foldl(fun(X, Sum) -> X*X + Sum end, 0, [3,1,4,1,5,9]).</langsyntaxhighlight>
 
=={{header|Euler}}==
Using [[Jensen's Device]]
'''begin'''
'''new''' i; '''new''' A; '''new''' sum;
sum &lt;- ` '''formal''' i; '''formal''' lo; '''formal''' hi; '''formal''' term;
'''begin'''
'''new''' temp; '''label''' loop;
temp &lt;- 0;
i &lt;- lo;
loop: '''begin'''
temp &lt;- temp + term;
'''if''' [ i &lt;- i + 1 ] &lt;= hi '''then''' '''goto''' loop '''else''' 0
'''end''';
temp
'''end'''
&apos;;
A &lt;- ( 1, 2, 3, 4, 5 );
'''out''' sum( @i, 1, '''length''' A, `A[i]*A[i]&apos; )
'''end''' $
 
=={{header|Euphoria}}==
<langsyntaxhighlight lang="euphoria">function SumOfSquares(sequence v)
atom sum
sum = 0
Line 1,102 ⟶ 1,192:
end for
return sum
end function</langsyntaxhighlight>
 
=={{header|Excel}}==
To find the sum of squares of values from A1 to A10, type in any other cell :
 
<syntaxhighlight lang="excel">
<lang Excel>
=SUMSQ(A1:A10)
</syntaxhighlight>
</lang>
 
The above expression will return zero if there are no values in any cell.
 
<syntaxhighlight lang="text">
12 3 5 23 13 67 15 9 4 2
5691
</syntaxhighlight>
</lang>
 
=={{header|F_Sharp|F#}}==
<langsyntaxhighlight lang="fsharp">[1 .. 10] |> List.fold (fun a x -> a + x * x) 0
[|1 .. 10|] |> Array.fold (fun a x -> a + x * x) 0</langsyntaxhighlight>
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USE: math sequences ;
 
: sum-of-squares ( seq -- n ) [ sq ] map-sum ;
 
{ 1.0 2.0 4.0 8.0 16.0 } sum-of-squares</langsyntaxhighlight>
 
=={{header|FALSE}}==
<syntaxhighlight lang="false">
<lang FALSE>
0 3 1 4 1 5 9$*\ [$0=~][$*+\]#%.
</syntaxhighlight>
</lang>
 
=={{header|Fantom}}==
<langsyntaxhighlight lang="fantom">
class SumSquares
{
Line 1,154 ⟶ 1,244:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Fish}}==
<syntaxhighlight lang="fish">v
<lang Fish>v
\0&
>l?!v:*&+&
>&n;</langsyntaxhighlight>
 
=={{header|Forth}}==
<langsyntaxhighlight lang="forth">: fsum**2 ( addr n -- f )
0e
dup 0= if 2drop exit then
Line 1,171 ⟶ 1,261:
 
create test 3e f, 1e f, 4e f, 1e f, 5e f, 9e f,
test 6 fsum**2 f. \ 133.</langsyntaxhighlight>
 
=={{header|Fortran}}==
In ISO Fortran 90 orlater, use SUM intrinsic and implicit element-wise array arithmetic:
<langsyntaxhighlight lang="fortran">real, dimension(1000) :: a = (/ (i, i=1, 1000) /)
real, pointer, dimension(:) :: p => a(2:1) ! pointer to zero-length array
real :: result, zresult
Line 1,183 ⟶ 1,273:
result = sum(a**2) ! Use exponentiation operator to get squares
 
zresult = sum(p*p) ! P is zero-length; P*P is valid zero-length array expression; SUM(P*P) == 0.0 as expected</langsyntaxhighlight>
 
=={{header|FreeBASIC}}==
<langsyntaxhighlight lang="freebasic">' FB 1.05.0 Win64
 
Function SumSquares(a() As Double) As Double
Line 1,203 ⟶ 1,293:
Print
Print "Press any key to quit"
Sleep</langsyntaxhighlight>
 
{{out}}
Line 1,211 ⟶ 1,301:
 
=={{header|Frink}}==
<langsyntaxhighlight lang="frink">
f = {|x| x^2} // Anonymous function which squares its argument
a = [1,2,3,5,7]
println[sum[map[f,a], 0]]
</syntaxhighlight>
</lang>
 
=={{header|Fōrmulæ}}==
 
{{FormulaeEntry|page=https://formulae.org/?script=examples/Sum_of_squares}}
Fōrmulæ programs are not textual, visualization/edition of programs is done showing/manipulating structures but not text. Moreover, there can be multiple visual representations of the same program. Even though it is possible to have textual representation &mdash;i.e. XML, JSON&mdash; they are intended for storage and transfer purposes more than visualization and edition.
 
'''Solution'''
Programs in Fōrmulæ are created/edited online in its [https://formulae.org website], However they run on execution servers. By default remote servers are used, but they are limited in memory and processing power, since they are intended for demonstration and casual use. A local server can be downloaded and installed, it has no limitations (it runs in your own computer). Because of that, example programs can be fully visualized and edited, but some of them will not run if they require a moderate or heavy computation/memory resources, and no local server is being used.
 
[[File:Fōrmulæ - Sum of squares 01.png]]
In '''[https://formulae.org/?example=Sum_of_squares this]''' page you can see the program(s) related to this task and their results.
 
'''Test cases'''
 
[[File:Fōrmulæ - Sum of squares 02.png]]
 
[[File:Fōrmulæ - Sum of squares 03.png]]
 
[[File:Fōrmulæ - Sum of squares 04.png]]
 
[[File:Fōrmulæ - Sum of squares 05.png]]
 
[[File:Fōrmulæ - Sum of squares 06.png]]
 
[[File:Fōrmulæ - Sum of squares 07.png]]
 
=={{header|GAP}}==
<langsyntaxhighlight lang="gap"># Just multiplying a vector by itself yields the sum of squares (it's an inner product)
# It's necessary to check for the empty vector though
SumSq := function(v)
Line 1,234 ⟶ 1,338:
return v*v;
fi;
end;</langsyntaxhighlight>
 
=={{header|GEORGE}}==
<langsyntaxhighlight GEORGElang="george">read (n) print ;
0
1, n rep (i)
read print dup mult +
]
print</langsyntaxhighlight>
data
<pre>
Line 1,277 ⟶ 1,381:
=={{header|Go}}==
;Implementation
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 1,289 ⟶ 1,393:
}
fmt.Println(sum)
}</langsyntaxhighlight>
{{out}}
<pre>
Line 1,295 ⟶ 1,399:
</pre>
;Library
<langsyntaxhighlight lang="go">package main
 
import (
Line 1,307 ⟶ 1,411:
func main() {
fmt.Println(floats.Dot(v, v))
}</langsyntaxhighlight>
{{out}}
<pre>
Line 1,314 ⟶ 1,418:
 
=={{header|Golfscript}}==
<langsyntaxhighlight lang="golfscript">{0\{.*+}%}:sqsum;
# usage example
[1 2 3]sqsum puts</langsyntaxhighlight>
 
=={{header|Groovy}}==
<langsyntaxhighlight lang="groovy">def array = 1..3
 
// square via multiplication
Line 1,328 ⟶ 1,432:
sumSq = array.collect { it ** 2 }.sum()
 
println sumSq</langsyntaxhighlight>
 
{{out}}
Line 1,336 ⟶ 1,440:
=={{header|Haskell}}==
Three approaches:
<langsyntaxhighlight lang="haskell">versions :: [[Int] -> Int]
versions =
[ sum . fmap (^ 2) -- ver 1
Line 1,345 ⟶ 1,449:
main :: IO ()
main =
mapM_ print ((`fmap` [[3, 1, 4, 1, 5, 9], [1 .. 6], [], [1]]) <$> versions)</langsyntaxhighlight>
{{Out}}
<pre>[133,91,0,1]
Line 1,352 ⟶ 1,456:
 
=={{header|Icon}} and {{header|Unicon}}==
<langsyntaxhighlight lang="icon">procedure main()
local lst
lst := []
Line 1,365 ⟶ 1,469:
every total +:= !lst ^ 2
return total
end</langsyntaxhighlight>
 
=={{header|IDL}}==
 
<syntaxhighlight lang ="idl">print,total(array^2)</langsyntaxhighlight>
 
=={{header|Inform 7}}==
<langsyntaxhighlight lang="inform7">Sum Of Squares is a room.
 
To decide which number is the sum of (N - number) and (M - number) (this is summing):
Line 1,387 ⟶ 1,491:
say line break;
say the sum of squares of {1, 2, 3};
end the story.</langsyntaxhighlight>
 
=={{header|Io}}==
<langsyntaxhighlight lang="io">list(3,1,4,1,5,9) map(squared) sum</langsyntaxhighlight>
 
=={{header|J}}==
 
<langsyntaxhighlight lang="j">ss=: +/ @: *:</langsyntaxhighlight>
 
That is, sum composed with square. The verb also works on higher-ranked arrays. For example:
 
<langsyntaxhighlight lang="j"> ss 3 1 4 1 5 9
133
ss $0 NB. $0 is a zero-length vector
Line 1,404 ⟶ 1,508:
x=: 20 4 ?@$ 0 NB. a 20-by-4 table of random (0,1) numbers
ss x
9.09516 5.19512 5.84173 6.6916</langsyntaxhighlight>
 
The computation can also be written as a loop. It is shown here for comparison only and
is highly non-preferred compared to the version above.
 
<langsyntaxhighlight lang="j">ss1=: 3 : 0
z=. 0
for_i. i.#y do. z=. z+*:i{y end.
Line 1,419 ⟶ 1,523:
0
ss1 x
9.09516 5.19512 5.84173 6.6916</langsyntaxhighlight>
 
=={{header|Java}}==
{{works with|Java|1.5+}}
<langsyntaxhighlight lang="java5">public class SumSquares
{
public static void main(final String[] args)
Line 1,433 ⟶ 1,537:
System.out.println("The sum of the squares is: " + sum);
}
}</langsyntaxhighlight>
 
=={{header|JavaScript}}==
===ES5===
<langsyntaxhighlight lang="javascript">function sumsq(array) {
var sum = 0;
var i, iLen;
Line 1,447 ⟶ 1,551:
}
 
alert(sumsq([1,2,3,4,5])); // 55</langsyntaxhighlight>
 
An alternative using a while loop and Math.pow
 
<langsyntaxhighlight lang="javascript">function sumsq(array) {
var sum = 0,
i = array.length;
Line 1,460 ⟶ 1,564:
}
 
alert(sumsq([1,2,3,4,5])); // 55</langsyntaxhighlight>
 
 
{{libheader|Functional}}<langsyntaxhighlight lang="javascript">Functional.reduce("x+y*y", 0, [1,2,3,4,5])</langsyntaxhighlight>
 
map (JS 1.6) and reduce (JS 1.8)
 
<langsyntaxhighlight lang="javascript">[3,1,4,1,5,9].map(function (n) { return Math.pow(n,2); }).reduce(function (sum,n) { return sum+n; });</langsyntaxhighlight>
 
===ES6===
 
Two ways of composing a sumOfSquares function
<langsyntaxhighlight JavaScriptlang="javascript">(() => {
'use strict';
 
Line 1,506 ⟶ 1,610:
// MAIN ---
return main();
})();</langsyntaxhighlight>
{{Out}}
<pre>133
133</pre>
 
=={{header|Joy}}==
<syntaxhighlight lang="joy">[1 2 3 4 5] 0 [dup * +] fold.</syntaxhighlight>
 
=={{header|jq}}==
jq supports both arrays and streams, and so we illustrate how to handle both.
<langsyntaxhighlight lang="jq"># ss for an input array:
def ss: map(.*.) | add;
 
# ss for a stream, S, without creating an intermediate array:
def ss(S): reduce S as $x (0; . + ($x * $x) );</langsyntaxhighlight>We can also use a generic "SIGMA" filter that behaves like the mathematical SIGMA:<langsyntaxhighlight lang="jq">
# SIGMA(exp) computes the sum of exp over the input array:
def SIGMA(exp): map(exp) | add;
Line 1,523 ⟶ 1,630:
# SIGMA(exp; S) computes the sum of exp over elements of the stream, S,
# without creating an intermediate array:
def SIGMA(exp; S): reduce (S|exp) as $x (0; . + $x);</langsyntaxhighlight>
Finally, a "mapreduce" filter:<langsyntaxhighlight lang="jq">
def mapreduce(mapper; reducer; zero):
if length == 0 then zero
else map(mapper) | reducer
end;
</syntaxhighlight>
</lang>
Demonstration:<langsyntaxhighlight lang="jq">def demo(n):
"ss: \( [range(0;n)] | ss )",
"ss(S): \( ss( range(0;n) ) )",
Line 1,538 ⟶ 1,645:
;
 
demo(3) # 0^2 + 1^2 + 2^2</langsyntaxhighlight>
{{out}}
<langsyntaxhighlight lang="jq">"ss: 5"
"ss(S): 5"
"SIGMA(.*.): 5"
"SIGMA(.*.;S): 5"
"mapreduce(.*.; add; 0): 5"</langsyntaxhighlight>
 
=={{header|Julia}}==
There are several easy ways to do this in Julia:
<langsyntaxhighlight lang="julia">julia> sum([1,2,3,4,5].^2)
55
 
Line 1,558 ⟶ 1,665:
 
julia> sum([x^2 for x in []])
0</langsyntaxhighlight>
 
=={{header|K}}==
<syntaxhighlight lang="k">
<lang k>
ss: {+/x*x}
ss 1 2 3 4 5
Line 1,567 ⟶ 1,674:
ss@!0
0
</syntaxhighlight>
</lang>
 
=={{header|Kotlin}}==
Line 1,578 ⟶ 1,685:
Finally, a classic for-loop can also be used. Note that because <code>forEach</code> and <code>fold</code> are inline functions, these are actually exactly as efficient as the had-written for-loop.
 
<langsyntaxhighlight lang="kotlin">import kotlin.random.Random
import kotlin.system.measureTimeMillis
import kotlin.time.milliseconds
Line 1,629 ⟶ 1,736:
for (v in longArray) acc += v
}
}</langsyntaxhighlight>
 
{{out}}
Line 1,656 ⟶ 1,763:
 
=={{header|Lambdatalk}}==
<langsyntaxhighlight lang="scheme">
{def sumsq
{lambda {:s}
Line 1,666 ⟶ 1,773:
{sumsq 0}
-> 0
</syntaxhighlight>
</lang>
 
=={{header|Lang5}}==
<langsyntaxhighlight lang="lang5">[1 2 3 4 5] 2 ** '+ reduce .</langsyntaxhighlight>
 
=={{header|Lasso}}==
<langsyntaxhighlight Lassolang="lasso">define sumofsquares(values::array) => {
 
local(sum = 0)
Line 1,683 ⟶ 1,790:
}
 
sumofsquares(array(1,2,3,4,5))</langsyntaxhighlight>
{{out}}
<pre>55</pre>
 
=={{header|LFE}}==
<langsyntaxhighlight lang="lisp">
(defun sum-sq (nums)
(lists:foldl
Line 1,694 ⟶ 1,801:
(+ acc (* x x)))
0 nums))
</syntaxhighlight>
</lang>
 
Usage:
<langsyntaxhighlight lang="lisp">
> (sum-sq '(3 1 4 1 5 9))
133
</syntaxhighlight>
</lang>
 
=={{header|Liberty BASIC}}==
<langsyntaxhighlight lang="lb">' [RC] Sum of Squares
 
SourceList$ ="3 1 4 1 5 9"
Line 1,729 ⟶ 1,836:
print "Sum of squares is "; SumOfSquares
 
end</langsyntaxhighlight>
 
=={{header|LiveCode}}==
<langsyntaxhighlight LiveCodelang="livecode">put "1,2,3,4,5" into nums
repeat for each item n in nums
add (n * n) to m
end repeat
put m // 55</langsyntaxhighlight>
 
=={{header|Logo}}==
<langsyntaxhighlight lang="logo">print apply "sum map [? * ?] [1 2 3 4 5] ; 55</langsyntaxhighlight>
 
=={{header|Logtalk}}==
<langsyntaxhighlight lang="logtalk">sum(List, Sum) :-
sum(List, 0, Sum).
 
Line 1,748 ⟶ 1,855:
sum([X| Xs], Acc, Sum) :-
Acc2 is Acc + X,
sum(Xs, Acc2, Sum).</langsyntaxhighlight>
 
=={{header|Lua}}==
<langsyntaxhighlight lang="lua">function squaresum(a, ...) return a and a^2 + squaresum(...) or 0 end
function squaresumt(t) return squaresum(unpack(t)) end
 
print(squaresumt{3, 5, 4, 1, 7})</langsyntaxhighlight>
 
=={{header|M2000 Interpreter}}==
M2000 use two concepts for arrays: standard array like A() and pointer to array as A. Pointer arithmetic not allowed here. Standard arrays are values types, and pointers are reference types. So we can handle an array both with pointer and without.
 
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Dim A() 'make an array with zero items
 
Line 1,786 ⟶ 1,893:
Now A and A() prints a 20 item array (Cons() add a list of arrays)
Print A ' or Print A() print the same
</syntaxhighlight>
</lang>
 
And this is the task, using a lambda function (we can use a standard function, just use Function Square { code here })
Line 1,794 ⟶ 1,901:
When we pass an array in stack, a pointer to array (to one of two interfaces) and depends the name type of a read to make this a copy or a pointer to array. So here we use: read a as a pointer to array (so it is a by reference pass). We can use Read a() and then a=a() (and remove Link a to a()), so we use by value pass, and that is a decision from callee, not the caller (this happen for objects)
 
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Module Checkit {
A=(1,2,3,4,5)
Line 1,816 ⟶ 1,923:
}
Checkit
</syntaxhighlight>
</lang>
 
=={{header|Maple}}==
<syntaxhighlight lang="maple">
<lang Maple>
F := V -> add(v^2, v in V):
F(<1,2,3,4,5>);
</syntaxhighlight>
</lang>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
As a function 1:
<langsyntaxhighlight lang="mathematica">SumOfSquares[x_]:=Total[x^2]
SumOfSquares[{1,2,3,4,5}]</langsyntaxhighlight>
As a function 2:
<langsyntaxhighlight lang="mathematica">SumOfSquares[x_]:=x.x
SumOfSquares[{1,2,3,4,5}]</langsyntaxhighlight>
Pure function 1: (postfix operator in the following examples)
<langsyntaxhighlight lang="mathematica">{1,2,3,4,5} // Total[#^2] &</langsyntaxhighlight>
Pure function 2:
<langsyntaxhighlight lang="mathematica">{1, 2, 3, 4, 5} // #^2 & // Total</langsyntaxhighlight>
Pure function 3:
<langsyntaxhighlight lang="mathematica">{1, 2, 3, 4, 5} // #.#&</langsyntaxhighlight>
 
=={{header|MATLAB}}==
<langsyntaxhighlight Matlablang="matlab">function [squaredSum] = sumofsquares(inputVector)
squaredSum = sum( inputVector.^2 );</langsyntaxhighlight>
 
=={{header|Maxima}}==
<langsyntaxhighlight lang="maxima">nums : [3,1,4,1,5,9];
sum(nums[i]^2,i,1,length(nums));</langsyntaxhighlight>
or
<langsyntaxhighlight lang="maxima">nums : [3,1,4,1,5,9];
lsum(el^2, el, nums);</langsyntaxhighlight>
 
=={{header|Mercury}}==
<syntaxhighlight lang="text">
:- module sum_of_squares.
:- interface.
Line 1,867 ⟶ 1,974:
 
sum_of_squares(Ns) = list.foldl((func(N, Acc) = Acc + N * N), Ns, 0).
</syntaxhighlight>
</lang>
 
=={{header|min}}==
{{works with|min|0.19.3}}
<langsyntaxhighlight lang="min">((bool) ((dup *) (+) map-reduce) (pop 0) if) :sq-sum
 
(1 2 3 4 5) sq-sum puts
() sq-sum puts</langsyntaxhighlight>
{{out}}
<pre>
Line 1,882 ⟶ 1,989:
 
=={{header|MiniScript}}==
<langsyntaxhighlight MiniScriptlang="miniscript">sumOfSquares = function(seq)
sum = 0
for item in seq
Line 1,892 ⟶ 1,999:
print sumOfSquares([4, 8, 15, 16, 23, 42])
print sumOfSquares([1, 2, 3, 4, 5])
print sumOfSquares([])</langsyntaxhighlight>
{{out}}
<pre>2854
Line 1,899 ⟶ 2,006:
 
=={{header|МК-61/52}}==
<syntaxhighlight lang="text">x^2 + С/П БП 00</langsyntaxhighlight>
 
=={{header|Modula-3}}==
<langsyntaxhighlight lang="modula3">MODULE SumSquares EXPORTS Main;
 
IMPORT IO, Fmt;
Line 1,920 ⟶ 2,027:
IO.Put(Fmt.Real(SumOfSquares(RealArray{3.0, 1.0, 4.0, 1.0, 5.0, 9.0})));
IO.Put("\n");
END SumSquares.</langsyntaxhighlight>
 
=={{header|MOO}}==
<langsyntaxhighlight lang="moo">@verb #100:sum_squares this none this rd
@program #100:sum_squares
sum = 0;
Line 1,938 ⟶ 2,045:
;#100:sum_squares({})
{} => 0
</syntaxhighlight>
</lang>
 
=={{header|MUMPS}}==
<langsyntaxhighlight MUMPSlang="mumps">SUMSQUARE(X)
;X is assumed to be a list of numbers separated by "^"
NEW RESULT,I
SET RESULT=0,I=1
FOR QUIT:(I>$LENGTH(X,"^")) SET RESULT=($PIECE(X,"^",I)*$PIECE(X,"^",I))+RESULT,I=I+1
QUIT RESULT</langsyntaxhighlight>
 
=={{header|Nanoquery}}==
<langsyntaxhighlight lang="nanoquery">def sum_squares(vector)
if len(vector) = 0
return 0
Line 1,963 ⟶ 2,070:
println sum_squares({})
println sum_squares({1, 2, 3, 4, 5})
println sum_squares({10, 3456, 2, 6})</langsyntaxhighlight>
{{out}}
<pre>0
Line 1,970 ⟶ 2,077:
 
=={{header|Nemerle}}==
<langsyntaxhighlight Nemerlelang="nemerle">SS(x : list[double]) : double
{
|[] => 0.0
|_ => x.Map(fun (x) {x*x}).FoldLeft(0.0, _+_)
}</langsyntaxhighlight>
 
=={{header|NetRexx}}==
<langsyntaxhighlight lang="netrexx">/*NetRexx *************************************************************
* program to sum the squares of a vector of fifteen numbers.
* translated from REXX
Line 1,993 ⟶ 2,100:
sum=sum + x**2 /*add its square to the sum. */
end
say "The sum of" n "elements for the V vector is:" sum</langsyntaxhighlight>
{{out}}
<pre>The sum of 15 elements for the V vector is: 10650.25</pre>
 
=={{header|NewLISP}}==
<langsyntaxhighlight NewLISPlang="newlisp">(apply + (map (fn(x) (* x x)) '(3 1 4 1 5 9)))
-> 133
(apply + (map (fn(x) (* x x)) '()))
-> 0</langsyntaxhighlight>
 
=={{header|Nim}}==
<langsyntaxhighlight lang="nim">import math, sequtils
 
proc sumSquares[T: SomeNumber](a: openArray[T]): T =
Line 2,013 ⟶ 2,120:
 
let a2: seq[float] = @[]
echo a2, " → ", sumSquares(a2)</langsyntaxhighlight>
 
{{out}}
<pre>[1, 2, 3, 4, 5] → 55
@[] → 0.0</pre>
 
=={{header|Oberon-2}}==
{{trans|Modula-3}}
<syntaxhighlight lang="oberon2">
MODULE SumSquares;
 
IMPORT Out;
 
VAR
A1:ARRAY 6 OF REAL;
 
PROCEDURE Init;
BEGIN
A1[0] := 3.0; A1[1] := 1.0; A1[2] := 4.0; A1[3] := 5.0; A1[4] := 9.0;
END Init;
PROCEDURE SumOfSquares(VAR arr:ARRAY OF REAL):REAL;
VAR
i:LONGINT;
sum:REAL;
BEGIN
sum := 0.0;
FOR i := 0 TO LEN(arr)-1 DO
sum := sum + arr[i] * arr[i]
END;
RETURN sum
END SumOfSquares;
 
BEGIN
Init;
Out.Real(SumOfSquares(A1),0);
Out.Ln
END SumSquares.
</syntaxhighlight>
 
{{out}}
<pre>1.32E+02
</pre>
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="objeck">
bundle Default {
class Sum {
Line 2,037 ⟶ 2,182:
}
}
</syntaxhighlight>
</lang>
 
=={{header|OCaml}}==
 
<langsyntaxhighlight lang="ocaml">List.fold_left (fun sum a -> sum + a * a) 0 ints</langsyntaxhighlight>
 
<langsyntaxhighlight lang="ocaml">List.fold_left (fun sum a -> sum +. a *. a) 0. floats</langsyntaxhighlight>
 
=={{header|Octave}}==
 
<langsyntaxhighlight lang="octave">a = [1:10];
sumsq = sum(a .^ 2);</langsyntaxhighlight>
 
=={{header|Oforth}}==
 
<langsyntaxhighlight Oforthlang="oforth">#sq [1, 1.2, 3, 4.5 ] map sum</langsyntaxhighlight>
 
=={{header|Ol}}==
<langsyntaxhighlight lang="scheme">
(define (sum-of-squares l)
(fold + 0 (map * l l)))
Line 2,061 ⟶ 2,206:
(print (sum-of-squares '(1 2 3 4 5 6 7 8 9 10)))
; ==> 385
</syntaxhighlight>
</lang>
 
=={{header|Order}}==
 
<langsyntaxhighlight lang="c">#include <order/interpreter.h>
 
ORDER_PP(8to_lit(
8seq_fold(8plus, 0,
8seq_map(8fn(8X, 8times(8X, 8X)), 8seq(3, 1, 4, 1, 5, 9)))
))</langsyntaxhighlight>
 
=={{header|Oz}}==
<langsyntaxhighlight lang="oz">declare
fun {SumOfSquares Xs}
for X in Xs sum:S do
Line 2,080 ⟶ 2,225:
end
in
{Show {SumOfSquares [3 1 4 1 5 9]}}</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
===Generic===
It is possible to apply a function, in this case ^2 to each element of an iterable and sum the result:
<langsyntaxhighlight lang="parigp">ss(v)={
sum(i=1,#v,v[i]^2)
};</langsyntaxhighlight>
===Specific===
For this particular task the product of a row matrix and its transpose is the sum of squares:
<langsyntaxhighlight lang="parigp">
n=[2,5,23]
print(n*n~)
n=[]
print(n*n~)
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,106 ⟶ 2,251:
{{libheader|Math}}
Example from the documenation of the run time library:
<langsyntaxhighlight lang="pascal">Program Example45;
 
{ Program to demonstrate the SumOfSquares function. }
Line 2,124 ⟶ 2,269:
Writeln('Sum squares : ',SumOfSquares(ExArray):8:4);
Writeln('Sum squares (b) : ',SumOfSquares(@ExArray[1],100):8:4);
end.</langsyntaxhighlight>
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">sub sum_of_squares {
my $sum = 0;
$sum += $_**2 foreach @_;
Line 2,133 ⟶ 2,278:
}
 
print sum_of_squares(3, 1, 4, 1, 5, 9), "\n";</langsyntaxhighlight>
or
<langsyntaxhighlight lang="perl">use List::Util qw(reduce);
sub sum_of_squares {
reduce { $a + $b **2 } 0, @_;
}
 
print sum_of_squares(3, 1, 4, 1, 5, 9), "\n";</langsyntaxhighlight>
 
=={{header|Phix}}==
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">function</span> <span style="color: #000000;">sum_of_squares</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">return</span> <span style="color: #7060A8;">sum</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sq_power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">))</span> <span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #0000FF;">?</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">({{},{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">},</span><span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #000000;">10</span><span style="color: #0000FF;">)},</span><span style="color: #000000;">sum_of_squares</span><span style="color: #0000FF;">)</span>
<!--</langsyntaxhighlight>-->
{{out}}
<pre>
Line 2,153 ⟶ 2,298:
 
=={{header|Phixmonti}}==
<langsyntaxhighlight Phixmontilang="phixmonti">0 tolist
10 for 0 put endfor
 
Line 2,161 ⟶ 2,306:
endfor
 
drop print /# 385 #/</langsyntaxhighlight>
 
=={{header|PHP}}==
<langsyntaxhighlight lang="php">
function sum_squares(array $args) {
return array_reduce(
Line 2,170 ⟶ 2,315:
);
}
</syntaxhighlight>
</lang>
 
In PHP5.3 support for anonymous functions was reworked. While the above code would still work, it is suggested to use
 
<langsyntaxhighlight lang="php">
function sum_squares(array $args) {
return array_reduce($args, function($x, $y) {
Line 2,180 ⟶ 2,325:
}, 0);
}
</syntaxhighlight>
</lang>
Usage for both examples: <code>sum_squares(array(1,2,3,4,5)); // 55</code>
 
=={{header|Picat}}==
<langsyntaxhighlight Picatlang="picat">go =>
List = 1..666,
println(sum_squares(List)),
Line 2,191 ⟶ 2,336:
 
sum_squares([]) = 0.
sum_squares(List) = sum([I*I : I in List]).</langsyntaxhighlight>
 
{{out}}
Line 2,198 ⟶ 2,343:
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">: (sum '((N) (* N N)) (3 1 4 1 5 9))
-> 133
: (sum '((N) (* N N)) ())
-> 0</langsyntaxhighlight>
 
=={{header|PL/0}}==
PL/0 has no arrays but they can be simulated.
<syntaxhighlight lang="pascal">
const maxlist = 5;
var sub, v, l1, l2, l3, l4, l5, sum;
procedure getelement;
begin
if sub = 1 then v := l1;
if sub = 2 then v := l2;
if sub = 3 then v := l3;
if sub = 4 then v := l4;
if sub = 5 then v := l5;
end;
procedure setelement;
begin
if sub = 1 then l1 := v;
if sub = 2 then l2 := v;
if sub = 3 then l3 := v;
if sub = 4 then l4 := v;
if sub = 5 then l5 := v;
end;
procedure sumofsquares;
begin
sub := 0;
sum := 0;
while sub < maxlist do begin
sub := sub + 1;
call getelement;
sum := sum + v * v
end;
end;
begin
sub := 0;
while sub < maxlist do begin
sub := sub + 1;
v := sub;
call setelement;
end;
call sumofsquares;
! sum;
end.
</syntaxhighlight>
{{out}}
<pre>
55
</pre>
 
=={{header|PL/I}}==
<syntaxhighlight lang="pl/i">
<lang PL/I>
declare A(10) float initial (10, 9, 8, 7, 6, 5, 4, 3, 2, 1);
 
put (sum(A**2));
</syntaxhighlight>
</lang>
 
=={{header|PL/M}}==
{{works with|8080 PL/M Compiler}} ... under CP/M (or an emulator)
<syntaxhighlight lang="plm">
100H: /* CALCULATE THE SUM OF THE SQUARES OF THE ELEMENTS OF AN ARRAY */
 
/* CP/M BDOS SYSTEM CALL AND I/O ROUTINES */
BDOS: PROCEDURE( FN, ARG ); DECLARE FN BYTE, ARG ADDRESS; GOTO 5; END;
PR$CHAR: PROCEDURE( C ); DECLARE C BYTE; CALL BDOS( 2, C ); END;
PR$STRING: PROCEDURE( S ); DECLARE S ADDRESS; CALL BDOS( 9, S ); END;
PR$NL: PROCEDURE; CALL PR$CHAR( 0DH ); CALL PR$CHAR( 0AH ); END;
PR$NUMBER: PROCEDURE( N ); /* PRINTS A NUMBER IN THE MINIMUN FIELD WIDTH */
DECLARE N ADDRESS;
DECLARE V ADDRESS, N$STR ( 6 )BYTE, W BYTE;
V = N;
W = LAST( N$STR );
N$STR( W ) = '$';
N$STR( W := W - 1 ) = '0' + ( V MOD 10 );
DO WHILE( ( V := V / 10 ) > 0 );
N$STR( W := W - 1 ) = '0' + ( V MOD 10 );
END;
CALL PR$STRING( .N$STR( W ) );
END PR$NUMBER;
 
/* TASK */
 
/* RETURNS THE SUM OF THE SQUARES OF THE ARRAY AT A$PTR, UB MUST BE THE */
/* UB MUST BE THE UPPER-BOUND OF THE ARRAY */
SUM$OF$SQUARES: PROCEDURE( A$PTR, UB )ADDRESS;
DECLARE ( A$PTR, UB ) ADDRESS;
DECLARE ( I, SUM ) ADDRESS;
DECLARE A BASED A$PTR ( 0 )ADDRESS;
SUM = 0;
DO I = 0 TO UB;
SUM = SUM + ( A( I ) * A( I ) );
END;
RETURN SUM;
END SUM$OF$SQUARES;
 
DECLARE VALUES ( 5 )ADDRESS INITIAL( 1, 2, 3, 4, 5 );
 
CALL PR$NUMBER( SUM$OF$SQUARES( .VALUES, LAST( VALUES ) ) );
 
EOF
</syntaxhighlight>
 
=={{header|Plain English}}==
<langsyntaxhighlight lang="plainenglish">To run:
Start up.
Create a list.
Line 2,244 ⟶ 2,481:
Add the element's ratio times the element's ratio to the ratio.
Put the element's next into the element.
Repeat.</langsyntaxhighlight>
{{out}}
<pre>
Line 2,252 ⟶ 2,489:
=={{header|Pop11}}==
 
<langsyntaxhighlight lang="pop11">define sum_squares(v);
lvars s = 0, j;
for j from 1 to length(v) do
Line 2,260 ⟶ 2,497:
enddefine;
 
sum_squares({1 2 3 4 5}) =></langsyntaxhighlight>
 
=={{header|PostScript}}==
<syntaxhighlight lang="text">
/sqrsum{
/x exch def
Line 2,278 ⟶ 2,515:
sum ==
}def
</syntaxhighlight>
</lang>
 
{{libheader|initlib}}
<langsyntaxhighlight lang="postscript">
[3 1 4 1 5 9] 0 {dup * +} fold
</syntaxhighlight>
</lang>
 
=={{header|PowerShell}}==
<langsyntaxhighlight lang="powershell">function Get-SquareSum ($a) {
if ($a.Length -eq 0) {
return 0
Line 2,295 ⟶ 2,532:
return $x.Sum
}
}</langsyntaxhighlight>
 
=={{header|Prolog}}==
Line 2,302 ⟶ 2,539:
 
=={{header|PureBasic}}==
<langsyntaxhighlight PureBasiclang="purebasic">Procedure SumOfSquares(List base())
ForEach base()
Sum + base()*base()
Next
ProcedureReturn Sum
EndProcedure</langsyntaxhighlight>
 
=={{header|Python}}==
'''Using generator expression'''
<langsyntaxhighlight lang="python">sum(x * x for x in [1, 2, 3, 4, 5])
# or
sum(x ** 2 for x in [1, 2, 3, 4, 5])
# or
sum(pow(x, 2) for x in [1, 2, 3, 4, 5])</langsyntaxhighlight>
 
'''Functional versions:'''
<langsyntaxhighlight lang="python"># using lambda and map:
sum(map(lambda x: x * x, [1, 2, 3, 4, 5]))
# or
Line 2,344 ⟶ 2,581:
reduce(add, powers_of_two)
# or using a bit more complex lambda
reduce(lambda a, x: a + x*x, [1, 2, 3, 4, 5])</langsyntaxhighlight>
 
'''Using NumPy:'''
<langsyntaxhighlight lang="python">import numpy as np
a = np.array([1, 2, 3, 4, 5])
np.sum(a ** 2)</langsyntaxhighlight>
 
=={{header|Q}}==
<syntaxhighlight lang ="q">ssq:{sum x*x}</langsyntaxhighlight>
 
=={{header|Quackery}}==
 
<langsyntaxhighlight Quackerylang="quackery"> [ 0 swap witheach [ 2 ** + ] ] is sumofsquares ( [ --> n )</langsyntaxhighlight>
 
{{out}}
Line 2,379 ⟶ 2,616:
 
=={{header|R}}==
<langsyntaxhighlight lang="r">arr <- c(1,2,3,4,5)
result <- sum(arr^2)</langsyntaxhighlight>
 
=={{header|Racket}}==
<langsyntaxhighlight lang="racket">
#lang racket
(for/sum ([x #(3 1 4 1 5 9)]) (* x x))
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
(formerly Perl 6)
<syntaxhighlight lang="raku" perl6line>say [+] map * ** 2, (3, 1, 4, 1, 5, 9);</langsyntaxhighlight>
 
If this expression seems puzzling, note that <code>* ** 2</code> is equivalent to <code>{$^x ** 2}</code>— the leftmost asterisk is not the multiplication operator but the <code>Whatever</code> star, which specifies currying behavior.
Line 2,396 ⟶ 2,633:
as a list infix is looser than comma in precedence but tighter than the reduction list operator:
 
<syntaxhighlight lang="raku" perl6line>say [+] <3 1 4 1 5 9> X** 2</langsyntaxhighlight>
 
=={{header|Raven}}==
<langsyntaxhighlight Ravenlang="raven">define sumOfSqrs use $lst
0 $lst each dup * +
 
[ 1 2 3 4] sumOfSqrs "Sum of squares: %d\n" print</langsyntaxhighlight>
{{out}}
<pre>Sum of squares: 30</pre>
 
=={{header|Red}}==
<langsyntaxhighlight lang="red">Red [
date: 2021-10-25
red-version: 0.6.4
Line 2,423 ⟶ 2,660:
 
print sum-squares []
print sum-squares [1 2 0.5]</langsyntaxhighlight>
{{out}}
<pre>
Line 2,429 ⟶ 2,666:
5.25
</pre>
 
=={{header|Refal}}==
<syntaxhighlight lang="refal">$ENTRY Go {
= <Prout <SquareSum 1 2 3 4 5>>
};
 
SquareSum {
= 0;
s.N e.rest = <+ <* s.N s.N> <SquareSum e.rest>>;
};</syntaxhighlight>
{{out}}
<pre>55</pre>
 
=={{header|ReScript}}==
With integers:
<langsyntaxhighlight lang="rescript">let sumOfSquares = (acc, item) => { acc + item * item }
 
Js.log(Js.Array2.reduce([10, 2, 4], sumOfSquares, 0))</langsyntaxhighlight>
 
With floats:
<langsyntaxhighlight lang="rescript">let sumOfSquares = (acc, item) => { acc +. item *. item }
 
Js.log(Js.Array2.reduce([10., 2., 4.], sumOfSquares, 0.))</langsyntaxhighlight>
 
=={{header|REXX}}==
===input from pgm===
<langsyntaxhighlight lang="rexx">/*REXX program sums the squares of the numbers in a (numeric) vector of 15 numbers. */
numeric digits 100 /*allow 100─digit numbers; default is 9*/
v= -100 9 8 7 6 0 3 4 5 2 1 .5 10 11 12 /*define a vector with fifteen numbers.*/
Line 2,452 ⟶ 2,701:
end /*k*/ /* [↑] if vector is empty, then sum=0.*/
/*stick a fork in it, we're all done. */
say 'The sum of ' # " squared elements for the V vector is: " $</langsyntaxhighlight>
'''output''' &nbsp; using an internal vector (list) of numbers:
<pre>
Line 2,459 ⟶ 2,708:
 
===input from C.L.===
<langsyntaxhighlight lang="rexx">/*REXX program sums the squares of the numbers in a (numeric) vector of 15 numbers. */
numeric digits 100 /*allow 100─digit numbers; default is 9*/
parse arg v /*get optional numbers from the C.L. */
Line 2,470 ⟶ 2,719:
end /*until*/ /* [↑] if vector is empty, then sum=0.*/
say /*stick a fork in it, we're all done. */
say 'The sum of ' # " squared elements for the V vector is: " $</langsyntaxhighlight>
'''output''' &nbsp; using a vector (list) of numbers from the command line:
<pre>
Line 2,479 ⟶ 2,728:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
aList = [1,2,3,4,5]
see sumOfSquares(aList)
Line 2,489 ⟶ 2,738:
next
return sumOfSquares
</syntaxhighlight>
</lang>
 
=={{header|RubyRPL}}==
Zero-length vectors don't exist in RPL, so there's no need to tackle this case:
<lang ruby>[3,1,4,1,5,9].reduce(0){|sum,x| sum + x*x}</lang>
≪ DUP DOT ≫ '<span style="color:blue">∑SQV</span>' STO
If we really need zero-length objects, we can use lists:
≪ 0 SWAP
'''IF''' DUP SIZE '''THEN'''
1 OVER SIZE '''FOR''' j
DUP j GET SQ + '''NEXT'''
'''END''' DROP
≫ '<span style="color:blue">∑SQL</span>' STO
Using RPL 1993:
≪ '''IF''' DUP SIZE '''THEN''' SQ ∑LIST '''ELSE''' SIZE '''END''' ≫ '<span style="color:blue">∑SQL</span>' STO
 
[ 1 2 3 4 5 ] <span style="color:blue">∑SQV</span>
or with the Ruby 2.4+ method ''sum''.
{ 1 2 3 4 5 } <span style="color:blue">∑SQL</span>
{ } <span style="color:blue">∑SQL</span>
{{out}}
<pre>
3: 55
2: 55
1: 0
</pre>
 
=={{header|Ruby}}==
<lang ruby>[3,1,4,1,5,9].sum(0){|x| x*x}</lang>
<syntaxhighlight lang="ruby">[3,1,4,1,5,9].sum(0){|x| x*x}</syntaxhighlight>
 
=={{header|Run BASIC}}==
<langsyntaxhighlight lang="runbasic">list$ = "1,2,3,4,5"
print sumOfSquares(list$)
 
Line 2,507 ⟶ 2,775:
sumOfSquares = sumOfSquares + val(word$(sos$,i,","))^2
wend
END FUNCTION</langsyntaxhighlight>
 
=={{header|Rust}}==
<langsyntaxhighlight lang="rust">fn sq_sum(v: &[f64]) -> f64 {
v.iter().fold(0., |sum, &num| sum + num*num)
}
Line 2,520 ⟶ 2,788:
let u : Vec<f64> = vec![];
println!("{}", sq_sum(&u));
}</langsyntaxhighlight>
 
=={{header|Sather}}==
<langsyntaxhighlight lang="sather">class MAIN is
 
sqsum(s, e:FLT):FLT is
Line 2,538 ⟶ 2,806:
end;
 
end;</langsyntaxhighlight>
 
=={{header|Scala}}==
Unfortunately there is no common "Numeric" class that Int and Double both extend, since Scala's number representation maps closely to Java's. Those concerned about precision can define a similar procedure for integers.
 
<langsyntaxhighlight lang="scala">def sum_of_squares(xs: Seq[Double]) = xs.foldLeft(0) {(a,x) => a + x*x}</langsyntaxhighlight>
 
=={{header|Scheme}}==
<langsyntaxhighlight lang="scheme">(define (sum-of-squares l)
(apply + (map * l l)))</langsyntaxhighlight>
 
> (sum-of-squares (list 3 1 4 1 5 9))
Line 2,553 ⟶ 2,821:
 
=={{header|Seed7}}==
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
include "float.s7i";
Line 2,574 ⟶ 2,842:
writeln(squaredSum(list1));
writeln(squaredSum(list2));
end func;</langsyntaxhighlight>
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">func sum_of_squares(vector) {
var sum = 0;
vector.each { |n| sum += n**2 };
Line 2,584 ⟶ 2,852:
 
say sum_of_squares([]); # 0
say sum_of_squares([1,2,3]); # 14</langsyntaxhighlight>
 
=={{header|Slate}}==
<langsyntaxhighlight lang="slate">{1. 2. 3} reduce: [|:x :y| y squared + x].
{} reduce: [|:x :y| y squared + x] ifEmpty: [0].</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
<langsyntaxhighlight lang="smalltalk">#(3 1 4 1 5 9) inject: 0 into: [:sum :aNumber | sum + aNumber squared]</langsyntaxhighlight>
 
=={{header|SNOBOL4}}==
Line 2,600 ⟶ 2,868:
{{works with|CSnobol}}
 
<langsyntaxhighlight SNOBOL4lang="snobol4"> define('ssq(a)i') :(ssq_end)
ssq i = i + 1; ssq = ssq + (a<i> * a<i>) :s(sumsq)f(return)
ssq_end
Line 2,608 ⟶ 2,876:
loop i = i + 1; str len(p) span('0123456789') . a<i> @p :s(loop)
output = str ' -> ' sumsq(a)
end</langsyntaxhighlight>
 
{{out}}
Line 2,615 ⟶ 2,883:
=={{header|SQL}}==
 
<langsyntaxhighlight lang="sql">select sum(x*x) from vector</langsyntaxhighlight>
 
Note that this assumes that the values in our vector are named <code>x</code>.
Line 2,621 ⟶ 2,889:
=={{header|Standard ML}}==
 
<langsyntaxhighlight lang="sml">foldl (fn (a, sum) => sum + a * a) 0 ints</langsyntaxhighlight>
 
<langsyntaxhighlight lang="sml">foldl (fn (a, sum) => sum + a * a) 0.0 reals</langsyntaxhighlight>
 
=={{header|Stata}}==
=== Mata ===
<langsyntaxhighlight lang="stata">a = 1..100
sum(a:^2)
338350
Line 2,635 ⟶ 2,903:
0
sum(a:^2)
0</langsyntaxhighlight>
 
=={{header|Swift}}==
 
<langsyntaxhighlight lang="swift">func sumSq(s: [Int]) -> Int {
return s.map{$0 * $0}.reduce(0, +)
}</langsyntaxhighlight>
 
=={{header|Tailspin}}==
<langsyntaxhighlight lang="tailspin">
templates ssq
when <[](0)> do 0 !
Line 2,652 ⟶ 2,920:
[] -> ssq -> !OUT::write // outputs 0
[1..5] -> ssq -> !OUT::write // outputs 55
</syntaxhighlight>
</lang>
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">package require Tcl 8.6
namespace path ::tcl::mathop
 
Line 2,664 ⟶ 2,932:
puts [sum_of_squares {1 2 3 4}]; # ==> 30
puts [sum_of_squares {}]; # ==> 0
</syntaxhighlight>
</lang>
 
=={{header|Trith}}==
<langsyntaxhighlight lang="trith">[3 1 4 1 5 9] 0 [dup * +] foldl</langsyntaxhighlight>
 
=={{header|TUSCRIPT}}==
<langsyntaxhighlight lang="tuscript">
$$ MODE TUSCRIPT
array="3'1'4'1'5'9",sum=0
Line 2,677 ⟶ 2,945:
ENDLOOP
PRINT sum
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,685 ⟶ 2,953:
=={{header|UnixPipes}}==
 
<langsyntaxhighlight lang="bash">folder() {
(read B; res=$( expr $1 \* $1 ) ; test -n "$B" && expr $res + $B || echo $res)
}
Line 2,696 ⟶ 2,964:
 
 
(echo 3; echo 1; echo 4;echo 1;echo 5; echo 9) | fold</langsyntaxhighlight>
 
=={{header|UnixUNIX shellShell}}==
<syntaxhighlight lang="sh">sum_squares () {
<lang Unixshell>$ cat toto
_r=0
1
for _n
2
do
4
: "$((_r += _n * _n))"
8
done
16
echo "$_r"
$ cat toto toto | paste -sd*
}
1*2*4*8*16*1*2*4*8*16
 
$ cat toto toto | paste -sd* | bc -l
sum_squares 3 1 4 1 5 9</syntaxhighlight>
1048576
{{out}}
</lang>
<pre>133</pre>
 
=={{header|Ursala}}==
Line 2,716 ⟶ 2,985:
maps the product function to all pairs, and then sums the
result by way of the reduction operator, -:.
<langsyntaxhighlight Ursalalang="ursala">#import nat
 
ssq = sum:-0+ product*iip
Line 2,722 ⟶ 2,991:
#cast %n
 
main = ssq <21,12,77,0,94,23,96,93,72,72,79,24,8,50,9,93></langsyntaxhighlight>
{{out}}
<pre>62223</pre>
 
=={{header|V}}==
<langsyntaxhighlight lang="v">[sumsq [dup *] map 0 [+] fold].
 
[] sumsq
=0
[1 2 3] sumsq</langsyntaxhighlight>
=14
 
=={{header|VBA}}==
<langsyntaxhighlight lang="vb">Public Sub sum_of_squares()
Debug.Print WorksheetFunction.SumSq([{1,2,3,4,5,6,7,8,9,10}])
End Sub</langsyntaxhighlight>{{out}}
<pre> 385 </pre>
 
=={{header|VBScript}}==
<syntaxhighlight lang="vb">
<lang vb>
Function sum_of_squares(arr)
If UBound(arr) = -1 Then
Line 2,753 ⟶ 3,022:
WScript.StdOut.WriteLine sum_of_squares(Array(1,2,3,4,5))
WScript.StdOut.WriteLine sum_of_squares(Array())
</syntaxhighlight>
</lang>
 
{{Out}}
Line 2,762 ⟶ 3,031:
 
=={{header|Visual Basic .NET}}==
<langsyntaxhighlight lang="vbnet">
Private Shared Function sumsq(ByVal i As ICollection(Of Integer)) As Integer
If i Is Nothing OrElse i.Count = 0 Then
Line 2,799 ⟶ 3,068:
End Function
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,820 ⟶ 3,089:
SumOfSquares(15) = 1240
SumOfSquares(16) = 1496
</pre>
 
=={{header|VTL-2}}==
<syntaxhighlight lang="vtl2">
1000 :1)=1
1010 :2)=2
1020 :3)=3
1030 :4)=4
1040 :5)=5
1050 L=5
1060 #=2000
1070 ?=S
1080 #=9999
2000 R=!
2010 S=0
2020 I=1
2030 #=I<L+(I=L)=0*R
2040 S=I*I+S
2050 I=I+1
2060 #=2030
</syntaxhighlight>
{{out}}
<pre>
55
</pre>
 
=={{header|Wortel}}==
<langsyntaxhighlight lang="wortel">@sum !*^@sq [3 1 4 1 5 9] ; returns 133</langsyntaxhighlight>
<langsyntaxhighlight lang="wortel">@sum !*^@sq [] ; returns 0</langsyntaxhighlight>
As a function:
<syntaxhighlight lang ="wortel">^(@sum *^@sq)</langsyntaxhighlight>
Iterative function:
<langsyntaxhighlight lang="wortel">&a [@var sum 0 @for x of a :!+sum *x x sum]</langsyntaxhighlight>
 
=={{header|Wren}}==
<langsyntaxhighlight ecmascriptlang="wren">var sumSquares = Fn.new { |v| v.reduce(0) { |sum, n| sum + n * n } }
 
var v = [1, 2, 3, -1, -2, -3]
System.print("Vector : %(v)")
System.print("Sum of squares : %(sumSquares.call(v))")</langsyntaxhighlight>
 
{{out}}
Line 2,845 ⟶ 3,138:
=={{header|XLISP}}==
The task specification calls for a function that takes a numeric vector. If you want a function that takes a linked list (which would be more idiomatic), just extract the inner function <tt>SUMSQ</tt> and use that instead of <tt>SUM-OF-SQUARES</tt>.
<langsyntaxhighlight lang="lisp">(defun sum-of-squares (vec)
(defun sumsq (xs)
(if (null xs)
Line 2,858 ⟶ 3,151:
(print `(the sum of the squares of the first seven prime numbers is ,(sum-of-squares first-seven-primes)))
 
(print `(the sum of the squares of no numbers at all is ,(sum-of-squares zero-length-vector)))</langsyntaxhighlight>
{{out}}
<pre>(THE SUM OF THE SQUARES OF THE FIRST SEVEN PRIME NUMBERS IS 666)
Line 2,864 ⟶ 3,157:
 
=={{header|XPL0}}==
<langsyntaxhighlight XPL0lang="xpl0">include c:\cxpl\codes; \intrinsic 'code' declarations
 
func SumSq(V, L);
Line 2,876 ⟶ 3,169:
[IntOut(0, SumSq([1,2,3,4,5,6,7,8,9,10], 10)); CrLf(0);
IntOut(0, SumSq([0], 0)); CrLf(0); \zero-length vector "[]" doesn't compile
]</langsyntaxhighlight>
 
{{out}}
Line 2,885 ⟶ 3,178:
 
=={{header|zkl}}==
<langsyntaxhighlight lang="zkl">T().reduce(fcn(p,n){ p + n*n },0) //-->0
T(3,1,4,1,5,9).reduce(fcn(p,n){ p + n*n },0.0) //-->133.0
[1..5].reduce(fcn(p,n){ p + n*n },0) //-->55</langsyntaxhighlight>
9,476

edits