This is array03.m in view mode; [Download] [Up]
/* array01 - simple tests for MathArray from libMathArray
Copyright (C) 1995, Adam Fedor
*/
#ifdef NEXT_FOUNDATION
#import <foundation/NSValue.h>
#import <foundation/NSRange.h>
#include <foundation/NSAutoreleasePool.h>
#else
#include <Foundation/NSValue.h>
#include <Foundation/NSRange.h>
#include <Foundation/NSAutoreleasePool.h>
#endif
#include <stdio.h>
#include <math.h>
#include "MathArray/MathArray.h"
#include "MathArray/MaskedException.h"
#include "MathArray/MAValue.h"
#include "MathArray/MAValueData.h"
id <NSNumber,ComplexNumber>
array_func(id <NSNumber,ComplexNumber>number, unsigned *index, void *info)
{
return [MANumber numberWithInt:index[0]];
}
int
main()
{
MathArray *array;
MathArray *subarray;
NSRange range;
unsigned index[2];
int i;
NSAutoreleasePool* pool = [NSAutoreleasePool new];
[MaskedException bodysnatchNSException];
[MaskedException setMaskForAllExceptions:AbortException];
printf("Create 10 point vector...\n");
array = [MathArray maWithVector:10 objCType:@encode(int)];
printf("Perform user function...\n");
[array maPerformFunction:array_func userInfo:NULL];
printf("Extract subarray...\n");
range.location = 3;
range.length = 4;
subarray = [array arraySubrange:&range];
printf("Subarray has total %d (should be 18)\n",
[[subarray maTotal] intValue]);
printf("Insert subarray... (Should be 0 1 2 3 4 3 4 5 6 9)\n");
index[0] = 5;
[array setArray:subarray atIndex:index];
for (i=0; i < [[array mathData] count]; i++)
printf("%d ", [(NSNumber *)[[array mathData] valueAtIndex:i] intValue]);
printf("\n");
printf("Create 20X10 matrix...\n");
array = [MathArray maMatrixWithCols:10 rows:20 objCType:NULL];
printf("Perform user function...\n");
[array maPerformFunction:array_func userInfo:NULL];
index[0] = 5;
index[1] = 5;
printf("Insert subarray...\n");
[array setArray:subarray atIndex:index];
printf("Array has total %d (should be 1898)\n",
[[array maTotal] intValue]);
printf("Square array (by matrix multiplication)...\n");
[array maMatrixMultiply:[MA_TEMPORARY(array) maTranspose]];
printf("Array has total %d (should be 360246)\n",
[[array maTotal] intValue]);
printf("Where array is greater than 2470...\n");
[[array maGreater:[NSNumber numberWithInt:2470]] maWhere];
printf("Array has size %u, total %d (should be 26, 9324)\n",
[array sizes][0], [[array maTotal] intValue]);
printf("Random array...\n");
[array maRandomNormalMean: 0 deviation: 4];
for (i=0; i < [[array mathData] count]; i++)
printf("%d ", [(NSNumber *)[[array mathData] valueAtIndex:i] intValue]);
printf("\n");
[pool release];
return 0;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.