Hello I have this question about parallel programming class using C# program. I
ID: 3672610 • Letter: H
Question
Hello I have this question about parallel programming class using C# program.
I need to convert this serial code to parallel code ,it's about (finding Pi using Leibniz series)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
//finding Pi using Leibniz series
double pi, sum = 1;
double multiplier = 1;
for (int i = 3; i < 100000000; i = i + 2)
{
multiplier = multiplier * -1;
sum = sum + multiplier * ((double)1.0 / i);
}
pi = sum * 4;
Console.WriteLine(pi);
}
}
}
Explanation / Answer
Your code should go something like this:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
//finding Pi using Leibniz series
Task<double>[] tasks = new Task<double>[100];
int start = 3;
int end = 1000000;
for (int i = 0; i < 100; ++i) {
tasks[i] = new Task<double>(() => compute(start, end));
start = end;
end += 1000000;
}
double sum = 0.0;
for (int i = 0; i < 100; ++i) {
sum += tasks[i].Result;
}
Console.WriteLine(4 * sum);
}
static double compute(int start, int end) {
double multiplier = 1.0;
if (start % 2 == 0) multiplier *= -1;
double sum = 0;
for (int i = start; i < end; i += 2) {
multiplier *= -1;
sum += multiplier * ((double) 1.0 / i);
}
return sum;
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.