cbrt c语音_sqrt - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

在头文件中定义float sqrtf(float arg);(1)(自C99以来)

double sqrt(double arg);(2)

long double sqrtl(long double arg);(3)(自C99以来)

在头文件中定义

#define sqrt(arg)(4)(自C99以来)

1-3)计算平方根arg。

4)类型 - 通用宏:如果arg有类型long double,sqrtl被调用。否则,如果arg有整数类型或类型double,sqrt则调用。否则,sqrtf被调用。如果arg是复杂的或虚,则宏调用相应的复变函数(csqrtf,csqrt,csqrtl)。

参数

arg-浮点值

返回值

如果没有错误发生arg,则返回(√arg)的平方根。

如果发生域错误,则返回实现定义的值(NaN,如果支持)。

如果由于下溢而发生范围错误,则返回正确的结果(舍入后)。

错误处理

按照math_errhandling中的指定报告错误。

如果arg小于零,则会发生域错误。

如果实现支持IEEE浮点运算(IEC 60559),

如果参数小于-0,FE_INVALID则提高并返回NaN。

如果参数为+∞或±0,则返回,未修改。

如果参数是NaN,则返回NaN

注意

sqrt是IEEE标准所要求的。唯一需要确定的其他操作是算术运算符和函数fma。在舍入到返回类型(使用默认舍入模式)后,结果sqrt与无限精确的结果无法区分。换句话说,误差小于0.5 ulp。其他功能,包括pow,并不那么受到限制。

示例

#include #include #include #include 

#pragma STDC FENV_ACCESS ON

int main(void){    // normal use    printf("sqrt(100) = %f\n", sqrt(100));    printf("sqrt(2) = %f\n", sqrt(2));    printf("golden ratio = %f\n", (1+sqrt(5))/2);    // special values    printf("sqrt(-0) = %f\n", sqrt(-0.0));    // error handling

errno = 0; feclearexcept(FE_ALL_EXCEPT);    printf("sqrt(-1.0) = %f\n", sqrt(-1));    if(errno == EDOM) perror("    errno == EDOM");    if(fetestexcept(FE_INVALID)) puts("    FE_INVALID was raised");}

可能的输出:

sqrt(100) = 10.000000sqrt(2) = 1.414214golden ratio = 1.618034sqrt(-0) = -0.000000sqrt(-1.0) = -nan

errno = EDOM: Numerical argument out of domain

FE_INVALID was raised

参考

C11标准(ISO/IEC 9899:2011):7.12.7.5 sqrt函数(p:249)

7.25类型通用数学(p:373-375)

F.10.4.5 sqrt函数(p:525)

C99标准(ISO/IEC 9899:1999):7.12.7.5 sqrt函数(p:229-230)

7.22类型通用数学(p:335-337)

F.9.4.5 sqrt函数(p:462)

C89/C90标准(ISO/IEC 9899:1990):4.5.5.2 sqrt函数

See also

powpowfpowl (C99)(C99)computes a number raised to the given power (xy)  (function)cbrtcbrtfcbrtl (C99)(C99)(C99)computes cubic root (3√x)  (function)

hypothypotfhypotl (C99)(C99)(C99)computes square root of the sum of the squares of two given numbers (√x2+y2)  (function)

csqrtcsqrtfcsqrtl (C99)(C99)(C99)computes the complex square root  (function)

| C++ documentation for sqrt |

© cppreference.com

Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import numpy as np import pandas as pd from scipy.stats import kstest #from sklearn import preprocessing # get a column from dataframe def select_data(data, ny): yName = data.columns[ny] Y = data[yName] return Y # see which feature is normally distributed from dataframe def normal_test(df): for i in range(len(df.columns)): y = select_data(df,i) p = kstest(y,'norm') print("feature {}, p-value = {}".format(i,p[1])) # rescale feature i in dataframe def standard_rescale(df, i): y = select_data(df,i) m = np.mean(y) s = np.std(y) y = (y-m)/s return y # log-transform feature of dataframe def log_transform(df,i): y = select_data(df,i) y = np.log(y) return y # square root transform feature of dataframe def sqrt_transform(df,i): y = select_data(df,i) y = np.sqrt(y) return y # cube root transform feature of dataframe def cbrt_transform(df,i): y = select_data(df,i) y = np.cbrt(y) return y # transform dataframe into one of: standard, log, sqrt, cbrt def transform_dataframe(df, transformation): df_new = [] if transformation == "standard": for i in range(len(df.columns)-1): y = standard_rescale(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "log": for i in range(len(df.columns)-1): y = log_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "sqrt": for i in range(len(df.columns)-1): y = sqrt_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "cbrt": for i in range(len(df.columns)-1): y = cbrt_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) else: return "wrong arguments" df_new = pd.DataFrame(df_new) df_new = df_new.T return df_new df = pd.read_csv('iris.csv') no_feats = 4 df.columns =['0', '1', '2', '3', '4'] #normal_test(df) df_standard = transform_dataframe(df, "standard") #df_log = transform_dataframe(df, "log") #df_sqrt = transform_dataframe(df, "sqrt") #df_cbrt = transform_dataframe(df, "cbrt") #df_wrong = transform_dataframe(df, "lo") #print("standard-----------------------------------------") #normal_test(df_standard) #print("log-----------------------------------------") #normal_test(df_log) #print("square root-----------------------------------------") #normal_test(df_sqrt) #print("cube root-----------------------------------------") #normal_test(df_cbrt) result = df_standard # create new csv file with new dataframe result.to_csv(r'iris_std.csv', index = False, header=True)解释每一行代码
06-11
``` import numpy as np import pandas as pd from scipy.stats import kstest #定义一个函数,从DataFrame中获取指定列的数据 def select_data(data, ny): yName = data.columns[ny] Y = data[yName] return Y #定义一个函数,用于检验DataFrame中的每个特征是否符合正态分布 def normal_test(df): for i in range(len(df.columns)): y = select_data(df,i) p = kstest(y,'norm') print("feature {}, p-value = {}".format(i,p[1])) #定义一个函数,用于将指定列的特征进行标准化处理 def standard_rescale(df, i): y = select_data(df,i) m = np.mean(y) s = np.std(y) y = (y-m)/s return y #定义一个函数,用于对指定列的特征进行log变换 def log_transform(df,i): y = select_data(df,i) y = np.log(y) return y #定义一个函数,用于对指定列的特征进行平方根变换 def sqrt_transform(df,i): y = select_data(df,i) y = np.sqrt(y) return y #定义一个函数,用于对指定列的特征进行立方根变换 def cbrt_transform(df,i): y = select_data(df,i) y = np.cbrt(y) return y #定义一个函数,用于对DataFrame中的特征进行不同的变换 def transform_dataframe(df, transformation): df_new = [] if transformation == "standard": for i in range(len(df.columns)-1): y = standard_rescale(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "log": for i in range(len(df.columns)-1): y = log_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "sqrt": for i in range(len(df.columns)-1): y = sqrt_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "cbrt": for i in range(len(df.columns)-1): y = cbrt_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) else: return "wrong arguments" df_new = pd.DataFrame(df_new) df_new = df_new.T return df_new #读入iris.csv文件,并将第一行的列名替换为0,1,2,3,4 df = pd.read_csv('iris.csv') no_feats = 4 df.columns =['0', '1', '2', '3', '4'] #对DataFrame中的每个特征进行正态性检验 #normal_test(df) #对DataFrame进行标准化处理 df_standard = transform_dataframe(df, "standard") #对DataFrame进行log变换 #df_log = transform_dataframe(df, "log") #对DataFrame进行平方根变换 #df_sqrt = transform_dataframe(df, "sqrt") #对DataFrame进行立方根变换 #df_cbrt = transform_dataframe(df, "cbrt") #调用了一个不存在的变换,测试是否会返回错误提示 #df_wrong = transform_dataframe(df, "lo") #分别对标准化、log、平方根、立方根变换后的DataFrame进行正态性检验 #print("standard-----------------------------------------") #normal_test(df_standard) #print("log-----------------------------------------") #normal_test(df_log) #print("square root-----------------------------------------") #normal_test(df_sqrt) #print("cube root-----------------------------------------") #normal_test(df_cbrt) #将标准化后的DataFrame保存为iris_std.csv文件 result = df_standard result.to_csv(r'iris_std.csv', index = False, header=True) ``` 该程序是一个数据预处理的示例,其主要作用是读入一个包含鸢尾花数据的CSV文件,然后对数据进行不同的变换,包括标准化、log变换、平方根变换和立方根变换,并将变换后的结果保存到新的CSV文件中。程序中使用了numpy、pandas、scipy.stats等库,其中的函数包括对DataFrame中的特征进行正态性检验的normal_test函数,将指定列的特征进行标准化处理的standard_rescale函数,对指定列的特征进行log、平方根和立方根变换的log_transform、sqrt_transform和cbrt_transform函数,以及对整个DataFrame进行不同变换的transform_dataframe函数。在实际应用中,我们可以根据具体数据的特点选择合适的变换方式,以提高模型的性能和准确度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值