Total circles area: Difference between revisions

Content added Content deleted
m (→‎optimized: changed wording in the REXX section header.)
Line 1,965: Line 1,965:
div: 131072 unk: 602411 est: 21.565036 wet: 21.564524 dry: 21.565548 diff: 0.001024 error: -1.607121e-010</pre>
div: 131072 unk: 602411 est: 21.565036 wet: 21.564524 dry: 21.565548 diff: 0.001024 error: -1.607121e-010</pre>
Here the "diff" is calculated by subtracting the known wet and dry areas from the total area, and the "error" is the difference between that and the sum of the areas of the unknown blocks, to give a rough idea of how much floating point roundoff error we've accumulated.
Here the "diff" is calculated by subtracting the known wet and dry areas from the total area, and the "error" is the difference between that and the sum of the areas of the unknown blocks, to give a rough idea of how much floating point roundoff error we've accumulated.

=={{header|Phix}}==
{{trans|Python}}
<lang Phix>constant circles = {{ 1.6417233788, 1.6121789534, 0.0848270516},
{-1.4944608174, 1.2077959613, 1.1039549836},
{ 0.6110294452, -0.6907087527, 0.9089162485},
{ 0.3844862411, 0.2923344616, 0.2375743054},
{-0.2495892950, -0.3832854473, 1.0845181219},
{ 1.7813504266, 1.6178237031, 0.8162655711},
{-0.1985249206, -0.8343333301, 0.0538864941},
{-1.7011985145, -0.1263820964, 0.4776976918},
{-0.4319462812, 1.4104420482, 0.7886291537},
{ 0.2178372997, -0.9499557344, 0.0357871187},
{-0.6294854565, -1.3078893852, 0.7653357688},
{ 1.7952608455, 0.6281269104, 0.2727652452},
{ 1.4168575317, 1.0683357171, 1.1016025378},
{ 1.4637371396, 0.9463877418, 1.1846214562},
{-0.5263668798, 1.7315156631, 1.4428514068},
{-1.2197352481, 0.9144146579, 1.0727263474},
{-0.1389358881, 0.1092805780, 0.7350208828},
{ 1.5293954595, 0.0030278255, 1.2472867347},
{-0.5258728625, 1.3782633069, 1.3495508831},
{-0.1403562064, 0.2437382535, 1.3804956588},
{ 0.8055826339, -0.0482092025, 0.3327165165},
{-0.6311979224, 0.7184578971, 0.2491045282},
{ 1.4685857879, -0.8347049536, 1.3670667538},
{-0.6855727502, 1.6465021616, 1.0593087096},
{ 0.0152957411, 0.0638919221, 0.9771215985}},
{x,y,r} = columnize(circles),
r2 = sq_power(r,2)
atom xMin = min(sq_sub(x,r)),
xMax = max(sq_add(x,r)),
yMin = min(sq_sub(y,r)),
yMax = max(sq_add(y,r)),
boxSide = 500,
dx = (xMax - xMin) / boxSide,
dy = (yMax - yMin) / boxSide,
count = 0
sequence cxs = {}
for s=1 to boxSide do
atom py = yMin + s * dy
sequence cy = sq_power(sq_sub(py,y),2)
for c=1 to boxSide do
if s=1 then
atom px = xMin + c * dx
cxs = append(cxs,sq_power(sq_sub(px,x),2))
end if
sequence cx = cxs[c]
for i=1 to length(circles) do
if cx[i]+cy[i]<=r2[i] then count+=1 exit end if
end for
end for
end for
printf(1,"Approximate area = %.9f\n",{count * dx * dy})</lang>
{{out}}
<pre>
Approximate area = 21.561559772
</pre>


=={{header|Python}}==
=={{header|Python}}==