# Angel内置PSF

---

为了方便用户，Angel提供了一套内置的PSF（psFunc），供用户调用和参考，可以在此基础上，写出更好的psf。

PSF整体可以分为两大类：

1. Client 2 PSServer
2. PSServer 2 PSServer

它们的区别在于

> 第一类的运算，是客户端触发Server的，而第二类的运算，发生于PSServer之间

## Client 2 PSServer

* **Abs**

	* 功能：将矩阵某一行每一个元素的绝对值赋值给另外一行的相应元素
	* 参数：矩阵id，from 行号， to行号
	* 返回值：无

* **Add**
	* 功能：将矩阵某两行之和赋值给另外一行
	* 参数：矩阵id，from 行号1，from行号2，to行号
	* 返回值：无

* **AddS**
	* 功能：将矩阵某一行元素都加上一个标量后赋值给另外一行的相应元素
	* 参数：矩阵id，from 行号1，to行号，标量值
	* 返回值：无

* **Axpy**
	* 功能：y=Ax+y, x,y为向量，A为标量
	* 参数：矩阵id，代表x向量的行的行号，代表y向量的行的行号，标量值A
	* 返回值：无

* **Ceil**
	* 功能：将矩阵中的某一行的个元素向上取整得到的值赋值给另外一行的相应元素
	* 参数：矩阵id，from行号，to行号
	*返回值：无

* **Copy**
	* 功能：将矩阵中的某一行的个元素的值赋值给另外一行的相应元素
	* 参数：矩阵id，from行号，to行号
	* 返回值：无


## PSServer 2 PSServer

* **Div**
功能：将矩阵中的某两行的对应元素相除得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号
返回值：无

* **DivS**
功能：将矩阵中的某一行的每一个元素除以一个标量得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号，标量值
返回值：无

* **Exp**
功能：将矩阵中的某一行的每一个元素计算指数（以e为底，元素值为幂）运算，将值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Expm1**
功能：将矩阵中的某一行的每一个元素以e为底计算指数然后减去1，将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Fill**
功能：将矩阵中的某一行的每一个元素都置为一个标量值
参数：矩阵id，行号，标量值
返回值：无

* **Floor**
功能：将矩阵中的某一行的每一个元素向下取整，将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Increment**
功能：将矩阵中的某一行的每个元素加上一个标量值
参数：矩阵id，from行号，标量值数组，该数组长度必须与向量大小相等
返回值：无

* **Log**
功能：将矩阵中的某一行的每个元素求取自然对数， 将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Log10**
功能：将矩阵中的某一行的每个元素求取以10为底对数，将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Log1p**
功能：将矩阵中的某一行的每个元素加上1后求取为底对数，将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Map**
功能：将矩阵中的某一行的每个元素进行某种计算，将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号，计算函数（该计算函数拥有一个参数，即参数为元素的值）
返回值：无


* **MapWithIndex**
功能：将矩阵中的某一行的每个元素进行某种计算，将得到的值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号，计算函数（该计算函数拥有二个参数，即元素的下标和值）
返回值：无

* **MaxA**
功能：将矩阵中的某一行的每个元素与一个标量值进行比较，然后将较大的值赋值给该行的相应元素
参数：矩阵id，行号，标量值数组（该数组必须与行大小相等）
返回值：无

* **MaxV**
功能：将矩阵中的某两行的对应元素进行比较，然后将较大的值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号
返回值：无

* **MinA**
功能：将矩阵中的某一行的每个元素与一个标量值进行比较，然后将较小的值赋值给该行的相应元素
参数：矩阵id，行号，标量值数组（该数组必须与行大小相等）
返回值：无

* **MinV**
功能：将矩阵中的某两行的对应元素进行比较，然后将较小的值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号
返回值：无

* **Mul**
功能：将矩阵中的某两行的对应元素相乘，然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号
返回值：无

* **MulS**

功能：将矩阵中的某一行的每个元素乘以一个标量，然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号，标量值
返回值：无

* **Pow**
功能：将矩阵中的某一行的每个元素做指数运算（指数的底为元素值，幂为一个指定的标量），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号，标量值
返回值：无

* **Put**
功能：给矩阵的某一行的每一个元素赋值
参数：矩阵id，行号，标量值数组（该数组大小必须与行大小相等）
返回值：无

* **RandomNormal**
功能：给矩阵的某一行的每一个元素赋一个随机值，值符合高斯分布
参数：矩阵id，行号，高斯分布平均数，高斯分布标准差
返回值：无

* **RandomUniform**
功能：给矩阵的某一行的每一个元素赋一个随机值，值符合均匀分布
参数：矩阵id，行号，均匀分布范围下限，均匀分布范围上限
返回值：无

* **Round**
功能：将矩阵中的某一行的每个元素做round计算（求取最接近的整数），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Scale**
功能：将矩阵中的某一行的每个元素乘以一个标量
参数：矩阵id，行号，标量值
返回值：无

* **Signum**
功能：将矩阵中的某一行的每个元素做signum运算（值大于0，返回1.0；小于0，返回-1.0；等于0，返回0），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Sqrt**
功能：将矩阵中的某一行的每个元素做平方根运算，然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号，to行号
返回值：无

* **Sub**
功能：将矩阵中的某两行的对应元素做减法，然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号
返回值：无

* **Zip2Map**
功能：将矩阵中的某两行的对应元素指定运算（由一个函数表示），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号，运算函数（该函数有两个参数，分别是两行对应位置上的元素值）
返回值：无

* **Zip2MapWithIndex**
功能：将矩阵中的某两行的对应元素指定运算（由一个函数表示），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号，运算函数（该函数有三个参数，分别是元素下标索引，两行对应位置上的元素值）
返回值：无

* **Zip3Map**
功能：将矩阵中的某三行的对应元素指定运算（由一个函数表示），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号，运算函数（该函数有三个参数，分别是三行对应位置上的元素值）
返回值：无

* **Zip3MapWithIndex**
功能：将矩阵中的某三行的对应元素指定运算（由一个函数表示），然后将值赋值给另外一行的相应元素
参数：矩阵id，from行号1，from行号2，to行号，运算函数（该函数有四个参数，分别是元素下标索引，三行对应位置上的元素值）
返回值：无