首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同数值公差的不同Equality[DenseVector]类型

不同数值公差的不同Equality[DenseVector]类型
EN

Stack Overflow用户
提问于 2017-09-27 01:33:36
回答 1查看 67关注 0票数 0

我为DenseVectors编写了一个标度相等的提供程序,它使用closeTo方法来检查向量中的每个双值是否足够接近。

代码语言:javascript
复制
 implicit val vectorEquality: Equality[DenseVector[Double]] = new Equality[DenseVector[Double]] {
    def areEqual(a: DenseVector[Double], b: Any): Boolean = {
      b match {
        case b: DenseVector[Double] => (a.valuesIterator zip b.valuesIterator).forall(p =>
          closeTo(p._1, p._2))
        case _ => false
      }
    }

当我在测试中使用这个等式时,有没有任何方法来控制closeTo的紧密性?有时我希望在测试中“应该相等”,意思是等于小数点2位,而其他时候,我想要一个更严格的要求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-07 20:27:46

是的,您可以控制紧密性,因为closeTo有第三个参数,称为引人中定义的公差。

代码语言:javascript
复制
class RichDouble(x: Double) {
    def closeTo(y: Double, tol: Double=1E-5) = {
      (math.abs(x - y) / (math.abs(x) + math.abs(y) + 1e-10) < tol);
    }
    def isDangerous = x.isNaN || x.isInfinite
}

示例可以在X平方分布的测试中找到。

代码语言:javascript
复制
def paramsClose(p: Double, b: Double) = breeze.numerics.closeTo(p, b, 5E-2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46438138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档