This is Exponential.m in view mode; [Download] [Up]
/* Exponential.m
*
* Paul Rensing Mar 5, 1993
*
* Subclass of PFunction to manage an exponential function
*
* Copyright (C) 1993 The Board of Trustees of
* The Leland Stanford Junior University. All Rights Reserved.
*/
#import "Exponential.h"
const char Exponential_h_rcsid[] = EXPONENTIAL_H_ID;
const char Exponential_m_rcsid[] = "$Id: Exponential.m,v 1.1 1993/03/10 20:12:27 rensing Exp $";
#import <objc/Storage.h>
#include <math.h>
@implementation Exponential
static double exponential( double x, double binW, double *par )
{
return binW * par[0] * exp( par[1] * x );
}
- init
{
[super init];
[[[self setTitle:"Exponential"] setFunctionPtr:exponential] setNumberArgs:2];
[self registerFunc]; /* must be called after the above */
[self setArgName:"Norm" at:0];
[self setArgName:"ExpSlope" at:1];
return self;
}
- setInitialValues
{
fitParm *parm;
graphtype_t type;
[super setInitialValues];
if (!disp)
return self;
type = h_getDispType(disp);
parm = [variedParms elementAt:0];
parm->lower_limit = disp->yAxis.low;
parm->upper_limit = disp->yAxis.high;
parm->value = 0.8 * parm->upper_limit;
parm->step_size = 0.01 * (disp->yAxis.high - disp->yAxis.low);
parm = [variedParms elementAt:1];
if (disp->yAxis.low > 0)
parm->upper_limit = (log(disp->yAxis.high) - log(disp->yAxis.low))
/ (disp->xAxis.high - disp->xAxis.low);
else
parm->upper_limit = 10.0;
parm->lower_limit = -parm->upper_limit;
parm->step_size = 0.02 * fabs(parm->upper_limit);
parm->value = 0.0;
return self;
}
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.