static int GM_CDECL gmfMin(gmThread * a_thread) { GM_CHECK_NUM_PARAMS(2); int minType = gmMin<int>(a_thread->ParamType(0), a_thread->ParamType(1)); if(minType < GM_INT) { return GM_EXCEPTION; } int maxType = gmMax<int>(a_thread->ParamType(0), a_thread->ParamType(1)); if(maxType == GM_INT) { int valX = a_thread->Param(0).m_value.m_int; int valY = a_thread->Param(1).m_value.m_int; a_thread->PushInt( gmMin(valX, valY) ); return GM_OK; } else if(maxType == GM_FLOAT) { float valX = gmGetFloatOrIntParamAsFloat(a_thread, 0); float valY = gmGetFloatOrIntParamAsFloat(a_thread, 1); a_thread->PushFloat( gmMin(valX, valY) ); return GM_OK; } else { return GM_EXCEPTION; } }
void Algebraic::degree(int deg) { int i; double* m_a_back; m_a_back = m_a; int* m_x_back = m_x; int* m_y_back = m_y; int* m_z_back = m_z; double* m_xPow_back = m_xPow; double* m_yPow_back = m_yPow; double* m_zPow_back = m_zPow; int old_numCoef = m_numCoef; int old_m_d = m_d; m_d = deg; calcNumCoef(); m_a = new double[m_numCoef]; m_x = new int[m_numCoef]; m_y = new int[m_numCoef]; m_z = new int[m_numCoef]; m_xPow = new double[m_d+1]; m_yPow = new double[m_d+1]; m_zPow = new double[m_d+1]; for (i = 0; i < gmMin(old_numCoef, m_numCoef); i++) { m_a[i] = m_a_back[i]; m_x[i] = m_x_back[i]; m_y[i] = m_y_back[i]; m_z[i] = m_z_back[i]; } for (i = 0; i < gmMin(old_m_d+1, m_d+1); i++) { m_xPow[i] = m_xPow_back[i]; m_yPow[i] = m_yPow_back[i]; m_zPow[i] = m_zPow_back[i]; } for (i = (int)gmMin(old_numCoef, m_numCoef); i < m_numCoef; i++) m_a[i] = 0.0; initPowerArrays(); delete[] m_a_back; delete[] m_x_back; delete[] m_y_back; delete[] m_z_back; delete[] m_xPow_back; delete[] m_yPow_back; delete[] m_zPow_back; }