#include <math.h>
#include <stdio.h>
#include <cstdlib>
 
static int samples = 20e6;
 
static double pi_device() {
}
 
static double pi_host() {
    for (int i = 0; i < samples; ++i) {
        float x = float(rand()) / float(RAND_MAX);
        float y = float(rand()) / float(RAND_MAX);
    }
    return 4.0 * 
count / samples;
 
}
 
static void device_wrapper() { pi_device(); }
static void host_wrapper() { pi_host(); }
 
int main(int argc, char** argv) {
    try {
        int device = argc > 1 ? atoi(argv[1]) : 0;
 
        printf("device:  %.5f seconds to estimate  pi = %.5f\n",
               timeit(device_wrapper), pi_device());
 
        printf("  host:  %.5f seconds to estimate  pi = %.5f\n",
               timeit(host_wrapper), pi_host());
 
        fprintf(stderr, 
"%s\n", e.
what());
        throw;
    }
 
    return 0;
}
A multi dimensional data container.
An ArrayFire exception class.
virtual const char * what() const
Returns an error message for the exception in a string format.
@ f32
32-bit floating point values
array sqrt(const array &in)
C++ Interface to evaluate the square root.
void setDevice(const int device)
Sets the current device.
array randu(const dim4 &dims, const dtype ty, randomEngine &r)
C++ Interface to create an array of random numbers uniformly distributed.
array count(const array &in, const int dim=-1)
C++ Interface to count non-zero values in an array along a given dimension.
array sum(const array &in, const int dim=-1)
C++ Interface to sum array elements over a given dimension.
double timeit(void(*fn)())