Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;
}
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote