Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/examples/sum.c

    r6ba0659 rb63e376  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Feb 16 23:49:31 2016
    13 // Update Count     : 189
     12// Last Modified On : Fri Mar  4 15:06:47 2016
     13// Update Count     : 196
    1414//
    1515
    1616#include <fstream>
    1717
    18 context sumable( type T ) {
     18trait sumable( otype T ) {
    1919        const T 0;
    2020        T ?+?( T, T );
     
    2424}; // sumable
    2525
    26 forall( type T | sumable( T ) )
     26forall( otype T | sumable( T ) )
    2727T sum( unsigned int n, T a[] ) {
    2828        T total = 0;                                                                            // instantiate T, select 0
     
    4747                a[i] = v;
    4848        } // for
    49         sout | "sum from " | low | " to " | High | " is "
    50                  | (int)sum( size, a ) | ", check " | (int)s | endl;
     49        sout | "sum from" | low | "to" | High | "is"
     50                 | (int)sum( size, a ) | "" | ", check" | (int)s | endl;
    5151
    5252        int s = 0, a[size], v = low;
     
    5555                a[i] = (int)v;
    5656        } // for
    57         sout | "sum from " | low | " to " | High | " is "
    58                  | sum( size, (int *)a ) | ", check " | (int)s | endl;
     57        sout | "sum from" | low | "to" | High | "is"
     58                 | sum( size, (int *)a ) | "" | ", check" | (int)s | endl;
    5959
    6060        float s = 0.0, a[size], v = low / 10.0;
     
    6363                a[i] = (float)v;
    6464        } // for
    65         sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is "
    66                  | sum( size, (float *)a ) | ", check " | (float)s | endl;
     65        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
     66                 | sum( size, (float *)a ) | "" | ", check" | (float)s | endl;
    6767
    6868        double s = 0, a[size], v = low / 10.0;
     
    7171                a[i] = (double)v;
    7272        } // for
    73         sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is "
    74                  | sum( size, (double *)a ) | ", check " | (double)s | endl;
     73        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
     74                 | sum( size, (double *)a ) | "" | ", check" | (double)s | endl;
    7575
    7676        struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 };
     
    7979        S ++?( S *t ) { *t += 1; return *t; }
    8080        S ?++( S *t ) { S temp = *t; *t += 1; return temp; }
    81         ofstream * ?|?( ofstream * os, S v ) { return os | v.i | ' ' | v.j; }
     81        ofstream * ?|?( ofstream * os, S v ) { return os | v.i | v.j; }
    8282
    8383        S s = 0, a[size], v = { low, low };
     
    8686                a[i] = (S)v;
    8787        } // for
    88         sout | "sum from " | low | " to " | High | " is "
    89                  | sum( size, (S *)a ) | ", check " | (S)s | endl;
     88        sout | "sum from" | low | "to" | High | "is"
     89                 | sum( size, (S *)a ) | "" | ", check" | (S)s | endl;
    9090} // main
    9191
Note: See TracChangeset for help on using the changeset viewer.