field.cpp
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C++ 代码 · 共 2,240 行 · 第 1/5 页
CPP
2,240 行
return rtn;
}
// @(#)f_floor.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
field floor(const field& f){
size_t l = f.root->length;
field rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = floor(f.root->data[i]);
return rtn;
}
// @(#)f_fmod_df.C 1.2 Release Date: 2/19/93
field fmod(double a, const field& b){
size_t l = b.Length();
field rtn(l);
double *rp = rtn;
const double *bp = b;
for (register i=0; i<l; i++) rp[i] = fmod(a, bp[i]);
return rtn;
}
// @(#)f_fmod_fd.C 1.2 Release Date: 2/19/93
field fmod(const field& a, double b){
size_t l = a.Length();
field rtn(l);
double *rp = rtn;
const double *ap = a;
for (register i=0; i<l; i++) rp[i] = fmod(ap[i], b);
return rtn;
}
// @(#)f_fmod_ff.C 1.1 Release Date: 2/19/93
field fmod(const field& a, const field& b){
size_t l = a.root->length;
assert(b.root->length == l);
field rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = fmod(a.root->data[i], b.root->data[i]);
return rtn;
}
// @(#)f_frexp.C 1.2 Release Date: 2/19/93
field frexp(const field& a, ifield& b){
size_t l = a.Length();
field rtn(l);
b = ifield(l);
double *rp = rtn;
const double *ap = a;
INT *bp = b;
for (register i=0; i<l; i++) {
int d;
rp[i] = frexp(ap[i], &d);
bp[i] = d;
}
return rtn;
}
// @(#)f_ftoi.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
field::field(const ifield& f) :
ref_flag(0)
{
if (!f.root){
root = NULL;
}else{
root = new(f.root->length) __field_node(f.root->length);
for (register i=0; i<root->length; i++)
root->data[i] = (int)f.root->data[i];
}
}
// @(#)f_gather_1.C 1.1 Release Date: 2/19/93
field field::Gather(const ifield& ia) const {
size_t l = ia.root->length;
field rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = root->data[ia[i]];
return rtn;
}
// @(#)f_gather_2.C 1.2 Release Date: 2/19/93
field field::Gather(size_t start, size_t end, size_t stride) const {
assert(end < root->length);
field rtn((end-start)/stride + 1);
double *rp = rtn;
const double* This = *this;
for (register i=start, j=0; i<end; i+=stride,j++) rp[j] = This[i];
return rtn;
}
// @(#)f_ge_df.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator>=(double b, const field& a){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (b >= a.root->data[i]);
return rtn;
}
// @(#)f_ge_fd.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator>=(const field& a, double b){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (a.root->data[i] >= b);
return rtn;
}
// @(#)f_ge_ff.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator>=(const field& a, const field& b){
size_t l = a.root->length;
assert(l == b.root->length);
ifield rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] >= b.root->data[i]);
return rtn;
}
// @(#)f_gt_df.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator>(double b, const field& a){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (b > a.root->data[i]);
return rtn;
}
// @(#)f_gt_fd.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator>(const field& a, double b){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (a.root->data[i] > b);
return rtn;
}
// @(#)f_gt_ff.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator>(const field& a, const field& b){
size_t l = a.root->length;
assert(l == b.root->length);
ifield rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] > b.root->data[i]);
return rtn;
}
// @(#)f_io.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
// I/O
size_t fread(field& f, FILE* d){
int length;
size_t rtn;
f.Free();
rtn = fread((char*)&length, sizeof(size_t), 1, d);
f.root = new(length) __field_node(length);
rtn += fread((char*)f.root->data, sizeof(double), length, d);
f.ref_flag = 0;
return (rtn == f.root->length+1? 1 : 0);
}
size_t fwrite(const field& f, FILE* d){
size_t rtn;
if (f.Length() != 0){
rtn = fwrite((char*)&f.root->length, sizeof(size_t), 1, d);
rtn += fwrite((char*)&(f.root->data[0]), sizeof(double), f.root->length, d);
return (rtn == f.root->length+1? 1 : 0);
}else{
const size_t ZERO = 0;
rtn = fwrite((char*)&ZERO, sizeof(size_t), 1, d);
return (rtn == 1? 1 : 0);
}
}
// @(#)f_ldexp.C 1.2 Release Date: 2/19/93
field ldexp(const field& a, const ifield& b){
size_t l = a.Length();
assert(l == b.Length());
field rtn(l);
double *rp = rtn;
const double *ap = a;
const INT *bp = b;
for (register i=0; i<l; i++) rp[i] = ldexp(ap[i], bp[i]);
return rtn;
}
// @(#)f_le_df.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator<=(double b, const field& a){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (b <= a.root->data[i]);
return rtn;
}
// @(#)f_le_fd.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator<=(const field& a, double b){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (a.root->data[i] <= b);
return rtn;
}
// @(#)f_le_ff.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator<=(const field& a, const field& b){
size_t l = a.root->length;
assert(l == b.root->length);
ifield rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] <= b.root->data[i]);
return rtn;
}
// @(#)f_leq_df.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator==(double b, const field& a){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (b == a.root->data[i]);
return rtn;
}
// @(#)f_leq_fd.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator==(const field& a, double b){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (a.root->data[i] == b);
return rtn;
}
// @(#)f_leq_ff.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator==(const field& a, const field& b){
size_t l = a.root->length;
assert(l == b.root->length);
ifield rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] == b.root->data[i]);
return rtn;
}
// @(#)f_lne_df.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator!=(double b, const field& a){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (b != a.root->data[i]);
return rtn;
}
// @(#)f_lne_fd.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator!=(const field& a, double b){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (a.root->data[i] != b);
return rtn;
}
// @(#)f_lne_ff.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator!=(const field& a, const field& b){
size_t l = a.root->length;
assert(l == b.root->length);
ifield rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] != b.root->data[i]);
return rtn;
}
// @(#)f_log.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
field log(const field& f){
size_t l = f.root->length;
field rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = log(f.root->data[i]);
return rtn;
}
// @(#)f_log10.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
field log10(const field& f){
size_t l = f.root->length;
field rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = log10(f.root->data[i]);
return rtn;
}
// @(#)f_lt_df.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator<(double b, const field& a){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (b < a.root->data[i]);
return rtn;
}
// @(#)f_lt_fd.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator<(const field& a, double b){
size_t l = a.root->length;
ifield rtn(l);
for (register i=0; i<l; i++) rtn.root->data[i] = (a.root->data[i] < b);
return rtn;
}
// @(#)f_lt_ff.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
ifield operator<(const field& a, const field& b){
size_t l = a.root->length;
assert(l == b.root->length);
ifield rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] < b.root->data[i]);
return rtn;
}
// @(#)f_max_df.C 1.1 Release Date: 2/19/93
field max(double b, const field& a){
size_t l = a.Length();
field rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] > b? a.root->data[i] : b);
return rtn;
}
// @(#)f_max_f.C 1.1 Release Date: 2/19/93
// Author: Kent G. Budge,
// Computational Physics Research and Development (1431)
// Sandia National Laboratories
double max(const field& f){
size_t l = f.root->length;
double retval = f.root->data[l-1];
for (register i=0; i<l-1; i++)
retval = (retval > f.root->data[i]? retval : f.root->data[i]);
return retval;
}
// @(#)f_max_fd.C 1.1 Release Date: 2/19/93
field max(const field& a, double b){
size_t l = a.Length();
field rtn(l);
for (register i=0; i<l; i++)
rtn.root->data[i] = (a.root->data[i] > b? a.root->data[i] : b);
return rtn;
}
// @(#)f_max_ff.C 1.1 Release Date: 2/19/93
field max(const field& a, const field& b){
size_t l = a.Length();
assert(l == b.root->length);
field rtn(l);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?