小编Siu*_*ji-的帖子

iPhone OS上的Bignum,线性代数和数字信号处理(iOS 4)

我想我在iPhone OS(iOS 4)中发现了一些宝石.

我发现Accelerate Framework提供了128位,256位,512位和1024位整数数据类型.Apple还实现了基本线性代数子程序(BLAS),Apple实现的LAPACK(线性代数PACKage)和数字信号处理(DSP)程序.

我很兴奋,因为据我所知,BLAS和LAPACK是最好的(也是最着名的)图书馆.(如果你从未听过他们的名字,只需谷歌他们,你就会理解.)他们让你解决联立线性方程(即矢量/矩阵表示法中的A x = b),进行快速矩阵乘法等等.

我很确定这些库可以在PowerPC和基于Intel的Mac上使用.但是,当我在Xcode中查找"iOS4中的新功能"文档时,它表示数据类型"在任何架构上都不受支持".当我比较适用于Mac OS X的vecLib参考适用于iOS的vecLlib参考时,我还发现iOS版本中缺少功能.

我的问题是:
有没有人使用这些库编译任何程序(bignum是我感兴趣的主要领域)并在真正的iPhone设备上成功运行它们?(能够展示他们在图书馆的实际经验的答案者更感谢.)

以下是参考图书馆的链接:
加速框架(iOS参考图书馆)
vecLib参考(Mac OS X参考库)
vecLib参考(iOS参考库)

以下是BLAS和LAPACK的官方常见问题解答:
BLAS FAQ
LAPACK FAQ

iphone objective-c bignum blas lapack

6
推荐指数
1
解决办法
5547
查看次数

在JavaScript中加载*.cshtml页面

*.cshtml单击链接后,我必须在布局页面中加载部分页面.如何在JavaScript/jQuery或Razor/MVC中完成?

谢谢!

asp.net-mvc jquery javascript-events razor

6
推荐指数
1
解决办法
4903
查看次数

一种计算任意大整数的整数平方根(isqrt)的有效算法

注意

对于Erlang或的解决方案C / C++,请转到下面的试验4.


维基百科文章

整数平方根

  • "整数平方根"的定义可以在这里找到

计算平方根的方法

  • 可以在这里找到做"魔术"的算法

[试验1:使用库功能]

isqrt(N) when erlang:is_integer(N), N >= 0 ->
    erlang:trunc(math:sqrt(N)).
Run Code Online (Sandbox Code Playgroud)

问题

此实现使用sqrt()C库中的函数,因此它不适用于任意大整数(请注意,返回的结果与输入不匹配.正确的答案应该是12345678901234567890):

Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> erlang:trunc(math:sqrt(12345678901234567890 * 12345678901234567890)).
12345678901234567168
2> 
Run Code Online (Sandbox Code Playgroud)

[试验2:+仅使用Bigint ]

isqrt2(N) when erlang:is_integer(N), N >= 0 ->
    isqrt2(N, 0, 3, 0).

isqrt2(N, I, _, Result) when I >= N ->
    Result;

isqrt2(N, …
Run Code Online (Sandbox Code Playgroud)

algorithm erlang biginteger bigint square-root

6
推荐指数
1
解决办法
4744
查看次数

何时是通过右值参考返回的好时机?

在阅读了大量有关右值参考的文章后,我知道:

std::string&& f_wrong()
{
    std::string s("hello");
    return std::move(s);
}
Run Code Online (Sandbox Code Playgroud)

是错的,并且:

std::string f_right()
{
    std::string s("hello");
    return s;
}
Run Code Online (Sandbox Code Playgroud)

足以使std::string(或任何移动可构造类)的移动构造函数被调用.此外,如果要使用返回值来构造对象,则应用命名返回值优化(NRVO),该对象将直接在目标地址处构造,因此不会调用移动构造函数:

std::string s = f_right();
Run Code Online (Sandbox Code Playgroud)

我的问题是:何时是通过右值引用返回的好时机?就我所能想到的而言,似乎返回一个右值引用除了像std::move()和之类的函数之外没有意义std::forward().这是真的吗?

谢谢!

参考

C++ 0x:人们理解右值引用吗?| Pizer的博客

通过右值参考返回

C++ 11 rvalues和移动语义混淆(return语句)

通过右值参考返回更有效吗?

c++ rvalue-reference move-semantics return-value-optimization c++11

6
推荐指数
0
解决办法
144
查看次数

返回元素数量可变的元组

我正在尝试在 Scala 中编写一个百分位实用程序。我正在考虑编写一个用可变数量的Int参数初始化的类。例如,一个用Percentile初始化的类50,95意味着它可以计算第 50 个百分位数和第 95 个百分位数。该类大致如下所示:

class PercentileUtil(num: Int*) {
    def collect(value: Int) {
        // Adds to a list
    }

    def compute = {
        // Returns the 50th and 95th percentiles as a tuple
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该如何定义函数计算?

scala tuples

5
推荐指数
1
解决办法
1946
查看次数

没找到android-ndk,glGenVertexArraysOES

我想在Android的native-c应用程序中使用VAO.

问题是,这GL_OES_vertex_array_object是支持的,我甚至可以得到的地址glBindVertexArrayOESglDeleteVertexArraysOES,但glGenVertexArraysOES没有找到.

存在是否GL_OES_vertex_array_object可以访问所有这些功能?

我的VAO初始化代码:

std::string vao = "GL_OES_vertex_array_object";

if ( isExtensionSupported ( vao.c_str () ) != 0 )
{
    LOG ( vao << " supported" );
    glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)eglGetProcAddress ( "glBindVertexArrayOES" );
    if ( !glBindVertexArrayOES )
        LOG ( "Can't get proc address: glBindVertexArrayOES" );

    glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)eglGetProcAddress ( "glDeleteVertexArraysOES" );
    if ( !glDeleteVertexArraysOES )
        LOG ( "Can't get proc address: glDeleteVertexArraysOES" );

    glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOESPROC)eglGetProcAddress ( "glGenVertexArraysOES" );
    if ( …
Run Code Online (Sandbox Code Playgroud)

android-ndk vertex-array

5
推荐指数
1
解决办法
2218
查看次数

你怎么得到一个函数指针到一个类型的函数?

以下代码获取指向该函数的指针hello并将其打印出来:

package main

import "fmt"

type x struct {}
func (self *x) hello2(a int) {}

func hello(a int) {}

func main() {
    f1 := hello
    fmt.Printf("%+v\n", f1)

    // f2 := hello2
    // fmt.Printf("%+v\n", f2)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我取消评论底部的部分,编译错误,说:

> ./junk.go:14: undefined: hello2
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

  i := &x{}
  f2 := &i.hello2
  fmt.Printf("%+v\n", f2)
Run Code Online (Sandbox Code Playgroud)

...但错误:

> ./junk.go:15: method i.hello2 is not an expression, must be called
Run Code Online (Sandbox Code Playgroud)

好吧,也许我必须直接参考原始类型:

  f2 := x.hello2
  fmt.Printf("%+v\n", f2)
Run Code Online (Sandbox Code Playgroud)

不:

> ./junk.go:14: invalid method expression x.hello2 (needs pointer receiver: (*x).hello2) …
Run Code Online (Sandbox Code Playgroud)

member-function-pointers function-pointers go

5
推荐指数
2
解决办法
1557
查看次数

java.util.Arrays.asList(T ...)如何工作?

这看起来似乎是一个愚蠢的问题,但我发现这个机制并非微不足道.从实现JDK 8(从复制这里)是短短的几行:

@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}
Run Code Online (Sandbox Code Playgroud)

关键在于:只有3个构造函数ArrayList:

  • 一个不带任何参数
  • 一个需要int(初始容量)
  • 一个采取Collection如下所示的(元素)(从这里复制):

public class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{

    // ...

    transient Object[] elementData; // non-private to simplify nested class access

    private int size;

    // ...

    public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        size = elementData.length;
        // c.toArray might (incorrectly) not return Object[] (see 6260652) …
Run Code Online (Sandbox Code Playgroud)

java arrays collections arraylist variadic-functions

5
推荐指数
2
解决办法
1358
查看次数

找到合适的 Python 类型提示,例如内置函数 map() 的签名

描述

在 Python 3.5 或更高版本中,支持类型提示(有关更多信息,请参见此处)。但是,常见类型的正确用法没有很好的文档记录。

例如,从官方网站,我可以收集以下(正确的)用法:

细绳

# The function signature of greeting is: Callable[[str], str]
def greeting(name: str) -> str:
    return 'Hello ' + name
Run Code Online (Sandbox Code Playgroud)

整数

# The function signature of add is: Callable[[int, int], int]
def add(a: int, b: int) -> int:
    return a + b
Run Code Online (Sandbox Code Playgroud)

浮点数

# The default value of x is 1.0
def reciprocal(x: float = 1.0) -> float:
    from math import nan
    if x == 0:
        return nan
    return 1 / x …
Run Code Online (Sandbox Code Playgroud)

python built-in type-hinting python-3.x

5
推荐指数
1
解决办法
717
查看次数

在 Go 泛型(版本 1.18)或更高版本中使用“void”类型作为参数化类型

Go 在1.18 版本中引入了泛型。我刚刚下载了最新的测试版来测试这个主要的新功能。

考虑下面的代码:

package main

import "fmt"

func Demo1(n int) int {
    return n
}

func Demo2(n int) {
    fmt.Println(n)
}

func Call[T1, T2 any](fn func(T1) T2, param T1) {
    fn(param)
}

func main() {
    // Okay
    Call(Demo1, 1)
    // type func(n int) of Demo2 does not match
    // inferred type func(int) T2 for func(T1) T2
    Call(Demo2, 2)
}

Run Code Online (Sandbox Code Playgroud)

该函数Call接受一个函数fn作为参数,并使用参数 来调用它param。第一次调用Call很好,推断的类型适用intT1T2。然而,第二次调用未能编译。

我知道我总是可以编写一个适配器来包装 …

generics void go

5
推荐指数
1
解决办法
1094
查看次数