Section courante

A propos

Section administrative du site

vForce

Le module vForce fait partie du cadre d'application Accelerate et fournit un ensemble étendu de fonctions mathématiques transcendantes et trigonométriques spécialement optimisées pour travailler sur des vecteurs de longueur arbitraire. Il permet aux développeurs de réaliser des calculs rapides et vectorisés sur de grandes collections de données numériques, tout en profitant des optimisations matérielles spécifiques aux processeurs Apple. Ces fonctions sont conçues pour fonctionner de manière efficace tant sur des valeurs en simple précision (Float) que sur des valeurs en double précision (Double), et elles peuvent traiter des vecteurs de toute taille sans restriction, offrant ainsi une grande flexibilité pour les calculs scientifiques, la modélisation et le traitement numérique de données.

Aperçu

La bibliothèque vForce fournit une gamme complète de fonctions trigonométriques, hyperboliques et transcendantes, adaptées aux applications nécessitant le traitement de larges ensembles de données numériques. Ces fonctions peuvent être appliquées simultanément sur tous les éléments d'un vecteur ou d'une collection de données, ce qui permet de réduire considérablement le temps de calcul par rapport à une approche itérative classique. Les fonctions de vForce sont vectorisées et optimisées pour tirer parti de l'architecture matérielle actuelle, ce qui inclut l'exécution sur plusieurs cours, l'utilisation des registres SIMD et la réduction des accès mémoire inutiles.

Les fonctions exposées par la bibliothèque vForce utilisent les noms mathématiques standards pour une meilleure lisibilité et compréhension, mais elles sont précédées du préfixe vv afin de les distinguer des fonctions scalaires classiques. Chaque fonction mathématique est disponible en deux variantes distinctes : une pour les données en simple précision et une pour les données en double précision. Les versions en simple précision utilisent le suffixe f, tandis que les versions en double précision n'ont aucun suffixe. Par exemple, la fonction vvcosf(_:_:_:) calcule le cosinus en simple précision pour un vecteur d'angles, tandis que vvcos(_:_:_:) constitue la variante équivalente en double précision. Ce système de suffixes permet aux développeurs de choisir facilement la précision souhaitée pour leurs calculs.

Toutes les fonctions de vForce suivent un format commun bien défini : le type de retour est void, ce qui signifie que les résultats sont écrits directement dans des tableaux fournis par l'utilisateur. Le premier paramètre pointe vers le tableau qui contiendra les résultats du calcul. Une exception notable concerne les fonctions vvsincosf(_:_:_:_:) et vvsincos(_:_:_:_:_), qui produisent simultanément deux résultats et utilisent donc deux tableaux de sortie, chacun désigné par l'un des deux premiers paramètres. Les paramètres suivants pointent vers les tableaux d'opérandes, qui doivent avoir la même longueur que le tableau de résultats, garantissant ainsi que chaque élément d'entrée correspond à un élément de sortie. Le dernier paramètre spécifie la longueur des tableaux, permettant aux fonctions de traiter des vecteurs de taille arbitraire.

Il est important de noter qu'à moins qu'il ne soit spécifiquement mentionné, les fonctions de vForce fonctionnent en place, ce qui signifie que les tableaux d'entrée peuvent être identiques aux tableaux de sortie. Cette capacité permet de réduire l'utilisation de mémoire et d'optimiser encore davantage les performances, car aucune copie supplémentaire des données n'est nécessaire. Cette approche in-place, combinée aux optimisations vectorielles, rend vForce particulièrement adaptée aux calculs de grande envergure et aux applications nécessitant une efficacité maximale.

En résumé, la bibliothèque vForce du cadre d'application Accelerate est un outil puissant pour effectuer des opérations mathématiques complexes sur des vecteurs de données de n'importe quelle taille, avec un support complet pour les précisions simple et double, des fonctions vectorisées hautement optimisées et une interface cohérente et facile à utiliser pour les développeurs travaillant sur des applications scientifiques, graphiques ou de calcul numérique avancé.

Utilisation de vForce

La bibliothèque vForce offre une alternative performante aux boucles `for` et à la fonction `map(_:)` pour les opérations sur les tableaux de nombres à virgule flottante.

Par exemple, étant donné un tableau `x` de taille quelconque contenant des valeurs en simple précision, le code suivant utilise `map(_:)` pour créer un second tableau `y`. À la fin de l'opération, `y` contient la racine carrée de chaque élément du tableau initial :

  1. let n = 10_000
  2.  
  3.  
  4. let x = (0..<n).map { _ in
  5.     Float.random(in: 1 ... 10_000)
  6. }
  7.  
  8.  
  9. let y = x.map {
  10.     return sqrt($0)
  11. }

La fonctionnalité équivalente implémentée dans vForce s'exécute beaucoup plus rapidement :

  1. let y = [Float](unsafeUninitializedCapacity: n) { buffer, initializedCount in
  2.     vForce.sqrt(x,
  3.                 result: &buffer)
  4.     
  5.     initializedCount = n
  6. }

Superposition Swift

Swift Description
enum vForce Une énumération servant d'espace de noms pour les superpositions Swift à vForce.

Fonctions arithmétiques et auxiliaires orientées tableaux

Swift Description
static func ceil<U>(U) -> [Double] Renvoie la valeur maximale de chaque élément d'un vecteur de valeurs à double précision.
static func ceil<U>(U) -> [Float] Renvoie le plafond de chaque élément d'un vecteur de valeurs à précision simple.
static func ceil<U, V>(U, result: inout V) Calcule le plafond de chaque élément d'un vecteur de valeurs à double précision.
static func ceil<U, V>(U, result: inout V) Cette fonction calcule le plafond (ceiling) de chaque élément dans un vecteur de valeurs en simple précision (Float) et écrit les résultats dans le vecteur result.
static func copysign<U, V>(magnitudes: U, signs: V) -> [Double] Cette fonction retourne un tableau de type Double où chaque élément du vecteur magnitudes conserve sa valeur absolue mais adopte le signe correspondant dans le vecteur signs.
static func copysign<U, V>(magnitudes: U, signs: V) -> [Float] Cette fonction retourne un tableau de type Float où chaque élément du vecteur magnitudes conserve sa valeur absolue mais prend le signe du vecteur signs.
static func copysign<T, U, V>(magnitudes: T, signs: U, result: inout V) Cette variante calcule chaque élément en double précision, en appliquant le signe correspondant du vecteur signs aux valeurs du vecteur magnitudes, et stocke le résultat dans result.
static func copysign<T, U, V>(magnitudes: T, signs: U, result: inout V) Cette variante calcule chaque élément en simple précision, en appliquant le signe du vecteur signs aux valeurs du vecteur magnitudes, avec stockage dans result.
static func floor<U>(U) -> [Double] Cette fonction retourne un tableau Double contenant la valeur entière inférieure (floor) de chaque élément du vecteur en double précision.
static func floor<U>(U) -> [Float] Cette fonction retourne un tableau Float contenant la valeur plancher de chaque élément du vecteur en simple précision.
static func floor<U, V>(U, result: inout V) Cette fonction calcule le floor de chaque élément d'un vecteur en double précision et place les résultats dans le vecteur result.
static func floor<U, V>(U, result: inout V) Cette fonction calcule le floor de chaque élément d'un vecteur en simple précision et stocke les résultats dans result.
static func nearestInteger<U>(U) -> [Double] Cette fonction renvoie l'entier le plus proche de chaque élément d'un vecteur de valeurs à double précision.
static func nearestInteger<U>(U) -> [Float] Retourne un tableau de type Float contenant l'entier le plus proche de chaque élément d'un vecteur en simple précision (Float).
static func nearestInteger<U, V>(U, result: inout V) Calcule l'entier le plus proche de chaque élément d'un vecteur en double précision (Double) et stocke le résultat dans le vecteur result.
static func nearestInteger<U, V>(U, result: inout V) Variante redondante : calcule également l'entier le plus proche de chaque élément d'un vecteur en double précision et écrit dans result.
static func reciprocal<U>(U) -> [Double] Retourne un tableau Double contenant le réciproque (1/x) de chaque élément du vecteur en double précision.
static func reciprocal<U>(U) -> [Float] Retourne un tableau Float contenant le réciproque de chaque élément du vecteur en simple précision.
static func reciprocal<U, V>(U, result: inout V) Calcule le réciproque de chaque élément d'un vecteur en double précision et entrepose les résultats dans result.
static func reciprocal<U, V>(U, result: inout V) Calcule le réciproque de chaque élément d'un vecteur en simple précision et entrepose les résultats dans result.
static func remainder<U, V>(dividends: U, divisors: V) -> [Double] Retourne un tableau Double contenant le reste de la division tronquée de chaque élément du vecteur dividends par le vecteur divisors pour des valeurs en double précision.
static func remainder<U, V>(dividends: U, divisors: V) -> [Float] Retourne un tableau Float contenant le reste de la division tronquée de chaque élément du vecteur dividends par le vecteur divisors pour des valeurs en simple précision.
static func remainder<T, U, V>(dividends: T, divisors: U, result: inout V) Calcule le reste de la division tronquée pour chaque élément en double précision et écrit les résultats dans le vecteur result.
static func remainder<T, U, V>(dividends: T, divisors: U, result: inout V) Calcule le reste de la division tronquée pour chaque élément en simple précision et écrit les résultats dans le vecteur result.
static func rsqrt<U>(U) -> [Double] Retourne un tableau Double contenant la racine carrée réciproque (1/√x) de chaque élément d'un vecteur en double précision.
static func rsqrt<U>(U) -> [Float] Retourne un tableau Float contenant la racine carrée réciproque de chaque élément d'un vecteur en simple précision.
static func rsqrt<U, V>(U, result: inout V) Calcule la racine carrée réciproque de chaque élément d'un vecteur en double précision et stocke les résultats dans le vecteur result.
static func rsqrt<U, V>(U, result: inout V) Calcule la racine carrée réciproque de chaque élément d'un vecteur en simple précision et écrit les résultats dans result.
static func sqrt<U>(U) -> [Double] Retourne un tableau Double contenant la racine carrée de chaque élément d'un vecteur en double précision.
static func sqrt<U>(U) -> [Float] Retourne un tableau Float contenant la racine carrée de chaque élément d'un vecteur en simple précision.
static func sqrt<U, V>(U, result: inout V) Calcule la racine carrée de chaque élément d'un vecteur en double précision et place les résultats dans le vecteur result.
static func sqrt<U, V>(U, result: inout V) Calcule la racine carrée de chaque élément d'un vecteur en simple précision et stocke les résultats dans result.
static func trunc<U>(U) -> [Double] Retourne un tableau Double contenant la troncature entière de chaque élément d'un vecteur en double précision, en supprimant la partie fractionnaire.
static func trunc<U>(U) -> [Float] Retourne un tableau Float contenant la troncature entière de chaque élément d'un vecteur en simple précision.
static func trunc<U, V>(U, result: inout V) Calcule la troncature entière de chaque élément d'un vecteur en double précision et écrit les résultats dans le vecteur result.
static func trunc<U, V>(U, result: inout V) Calcule la troncature entière de chaque élément d'un vecteur en simple précision et stocke les résultats dans result.
static func truncatingRemainder<U, V>(dividends: U, divisors: V) -> [Double] Retourne un tableau Double contenant le reste de la division tronquée pour chaque élément du vecteur dividends divisé par le vecteur divisors en double précision.
static func truncatingRemainder<U, V>(dividends: U, divisors: V) -> [Float] Retourne un tableau Float contenant le reste de la division tronquée pour chaque élément du vecteur dividends divisé par le vecteur divisors en simple précision.
static func truncatingRemainder<T, U, V>(dividends: T, divisors: U, result: inout V) Calcule le reste de la division tronquée pour chaque élément double précision et stocke le résultat dans le vecteur result.
static func truncatingRemainder<T, U, V>(dividends: T, divisors: U, result: inout V) Calcule le reste de la division tronquée pour chaque élément simple précision et écrit le résultat dans result.
func vvceil(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le plafond (ceiling) de chaque élément dans un tableau de valeurs double précision et écrit le résultat dans le tableau mutable fourni.
func vvceilf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le plafond de chaque élément dans un tableau de valeurs simple précision et écrit le résultat dans le tableau mutable fourni.
func vvfloor(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le plancher (floor) de chaque élément dans un tableau double précision et stocke les résultats dans le tableau mutable.
func vvfloorf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le plancher de chaque élément dans un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvcopysign(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Copie un tableau double précision, en appliquant à chaque élément le signe correspondant d'un second tableau double précision.
func vvcopysignf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Copie un tableau simple précision, en appliquant à chaque élément le signe correspondant d'un second tableau simple précision.
func vvdiv(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Divise chaque élément d'un tableau double précision par l'élément correspondant dans un second tableau double précision et stocke le résultat dans le tableau mutable fourni.
func vvdivf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Divise chaque élément d'un tableau simple précision (Float) par l'élément correspondant d'un second tableau et stocke le résultat dans le tableau mutable fourni.
func vvfabs(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la valeur absolue de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvfabsf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la valeur absolue de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvfmod(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le modulus après division de chaque élément d'un tableau double précision par l'élément correspondant d'un second tableau et stocke le résultat.
func vvfmodf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le modulus pour chaque élément d'un tableau simple précision en divisant par le tableau correspondant et écrit le résultat.
func vvremainder(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le reste de la division tronquée pour chaque élément d'un tableau double précision par le tableau correspondant et entrepose le résultat.
func vvremainderf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le reste de la division tronquée pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvint(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la troncature entière pour chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvintf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la troncature entière pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvnint(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule l'entier le plus proche pour chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvnintf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule l'entier le plus proche pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvrsqrt(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la racine carrée réciproque (1/√x) de chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable fourni.
func vvrsqrtf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la racine carrée réciproque (1/√x) de chaque élément d'un tableau de valeurs simple précision (Float) et entrepose les résultats dans le tableau mutable fourni.
func vvsqrt(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la racine carrée de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvsqrtf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la racine carrée de chaque élément d'un tableau simple précision et entrepose le résultat dans le tableau mutable fourni.
func vvrec(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le réciproque (1/x) de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvrecf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le réciproque de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvnextafter(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la valeur machine suivante représentable pour chaque élément d'un tableau double précision, par rapport aux valeurs du second tableau, et écrit le résultat dans le tableau mutable fourni.
func vvnextafterf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la valeur machine suivante représentable pour chaque élément d'un tableau simple précision, en fonction des valeurs du second tableau, et écrit le résultat dans le tableau mutable fourni.
static func exp<U>(U) -> [Double] Retourne un tableau Double contenant e^x pour chaque élément du vecteur en double précision, c'est-à-dire l'exponentielle de chaque élément.
static func exp<U>(U) -> [Float] Retourne un tableau Float contenant e^x pour chaque élément du vecteur en simple précision.
static func exp<U, V>(U, result: inout V) Calcule e^x pour chaque élément d'un vecteur en double précision et écrit les résultats dans le vecteur result.
static func exp<U, V>(U, result: inout V) Calcule e^x pour chaque élément d'un vecteur en simple précision et écrit les résultats dans le vecteur result.
static func exp2<U>(U) -> [Double] Retourne un tableau Double contenant 2^x pour chaque élément d'un vecteur en double précision.
static func exp2<U>(U) -> [Float] Retourne un tableau Float contenant 2^x pour chaque élément d'un vecteur en simple précision.
static func exp2<U, V>(U, result: inout V) Calcule 2^x pour chaque élément d'un vecteur en double précision et stocke les résultats dans le vecteur result.
static func exp2<U, V>(U, result: inout V) Calcule 2^x pour chaque élément d'un vecteur en simple précision et écrit les résultats dans le vecteur result.
static func expm1<U>(U) -> [Double] Retourne un tableau Double contenant e^x - 1 pour chaque élément d'un vecteur en double précision, utile pour les petites valeurs de x pour réduire les erreurs numériques.
static func expm1<U>(U) -> [Float] Retourne un tableau Float contenant e^x - 1 pour chaque élément d'un vecteur en simple précision.
static func expm1<U, V>(U, result: inout V) Calcule e^x - 1 pour chaque élément d'un vecteur en double précision et écrit le résultat dans le vecteur result.
static func expm1<U, V>(U, result: inout V) Calcule e^x - 1 pour chaque élément d'un vecteur en simple précision et stocke le résultat dans le vecteur result.
static func log10<U>(U) -> [Double] Retourne un tableau Double contenant le logarithme en base 10 de chaque élément d'un vecteur en double précision.
static func log10<U>(U) -> [Float] Retourne un tableau Float contenant le logarithme en base 10 de chaque élément d'un vecteur en simple précision.
static func log<U>(U) -> [Double] Retourne un tableau Double contenant le logarithme naturel (ln) de chaque élément d'un vecteur en double précision.
static func log<U>(U) -> [Float] Retourne un tableau Float contenant le logarithme naturel de chaque élément d'un vecteur en simple précision.
static func log<U, V>(U, result: inout V) Calcule le logarithme naturel pour chaque élément d'un vecteur en double précision et stocke le résultat dans le vecteur result.
static func log<U, V>(U, result: inout V) Calcule le logarithme naturel pour chaque élément d'un vecteur en simple précision et écrit le résultat dans le vecteur result.
static func log1p<U>(U) -> [Double] Retourne un tableau Double contenant log(1+x) pour chaque élément d'un vecteur en double précision, utile pour des valeurs proches de zéro afin de réduire les erreurs numériques.
static func log1p<U>(U) -> [Float] Retourne un tableau Float contenant log(1+x) pour chaque élément d'un vecteur en simple précision.
static func log1p<U, V>(U, result: inout V) Calcule log(1+x) pour chaque élément d'un vecteur en double précision et stocke le résultat dans le vecteur result.
static func log1p<U, V>(U, result: inout V) Calcule log(1+x) pour chaque élément d'un vecteur en simple précision et écrit le résultat dans le vecteur result.
static func log10<U, V>(U, result: inout V) Calcule le logarithme en base 10 pour chaque élément d'un vecteur double précision et stocke le résultat dans le vecteur result.
static func log10<U, V>(U, result: inout V) Calcule le logarithme en base 10 pour chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func log2<U>(U) -> [Double] Retourne un tableau Double contenant le logarithme en base 2 pour chaque élément d'un vecteur en double précision.
static func log2<U>(U) -> [Float] Retourne un tableau Float contenant le logarithme en base 2 pour chaque élément d'un vecteur en simple précision.
static func log2<U, V>(U, result: inout V) Calcule le logarithme en base 2 pour chaque élément d'un vecteur double précision et stocke le résultat dans le vecteur result.
static func log2<U, V>(U, result: inout V) Calcule le logarithme en base 2 pour chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func logb<U>(U) -> [Double] Retourne un tableau Double contenant l'exposant non biaisé de chaque élément d'un vecteur double précision.
static func logb<U>(U) -> [Float] Retourne un tableau Float contenant l'exposant non biaisé de chaque élément d'un vecteur simple précision.
static func logb<U, V>(U, result: inout V) Calcule l'exposant non biaisé de chaque élément d'un vecteur double précision et stocke le résultat dans le vecteur result.
static func logb<U, V>(U, result: inout V) Calcule l'exposant non biaisé de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
func vvexp(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule e^x pour chaque élément d'un tableau double précision et écrit les résultats dans le tableau mutable fourni.
func vvexpf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule e^x pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvexp2(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule 2^x pour chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable fourni.
func vvexp2f(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule 2^x pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvexpm1(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule e^x - 1 pour chaque élément d'un tableau double précision, utile pour les valeurs proches de zéro afin de réduire les erreurs numériques, et écrit le résultat dans le tableau mutable.
func vvexpm1f(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule e^x - 1 pour chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable fourni.
func vvlog(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le logarithme naturel (ln) pour chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvlogf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le logarithme naturel pour chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable fourni.
func vvlog1p(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule log(1+x) pour chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable fourni.
func vvlog1pf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule log(1+x) pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvlog2(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le logarithme en base 2 pour chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvlog2f(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le logarithme en base 2 pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvlog10(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le logarithme en base 10 pour chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvlog10f(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le logarithme en base 10 pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvlogb(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule l'exposant non biaisé pour chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvlogbf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule l'exposant non biaisé pour chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.

Fonctions de puissance orientées tableau

Swift Description
static func pow<U, V>(bases: U, exponents: V) -> [Double] Retourne un tableau Double contenant chaque élément du vecteur bases élevé à la puissance correspondante dans le vecteur exponents pour des valeurs double précision.
static func pow<U, V>(bases: U, exponents: V) -> [Float] Retourne un tableau Float contenant chaque élément du vecteur bases élevé à la puissance correspondante dans le vecteur exponents pour des valeurs simple précision.
static func pow<T, U, V>(bases: T, exponents: U, result: inout V) Calcule chaque élément double précision du vecteur bases élevé à la puissance correspondante dans exponents et écrit le résultat dans le vecteur result.
static func pow<T, U, V>(bases: T, exponents: U, result: inout V) Calcule chaque élément simple précision du vecteur bases élevé à la puissance correspondante dans exponents et écrit le résultat dans le vecteur result.
func vvpow(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Élévation à la puissance pour chaque élément d'un tableau double précision par l'élément correspondant d'un second tableau, avec stockage dans le tableau mutable.
func vvpowf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Élévation à la puissance pour chaque élément d'un tableau simple précision par l'élément correspondant d'un second tableau, avec stockage dans le tableau mutable.
static func acos<U>(U) -> [Double] Retourne un tableau Double contenant l'arccosinus de chaque élément d'un vecteur double précision.
static func acos<U>(U) -> [Float] Retourne un tableau Float contenant l'arccosinus de chaque élément d'un vecteur simple précision.
static func acos<U, V>(U, result: inout V) Calcule l'arccosinus de chaque élément d'un vecteur double précision et écrit le résultat dans le vecteur result.
static func acos<U, V>(U, result: inout V) Calcule l'arccosinus de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func asin<U>(U) -> [Double] Retourne un tableau Double contenant l'arcsinus (asin) de chaque élément d'un vecteur double précision.
static func asin<U>(U) -> [Float] Retourne un tableau Float contenant l'arcsinus de chaque élément d'un vecteur simple précision.
static func asin<U, V>(U, result: inout V) Calcule l'arcsinus de chaque élément d'un vecteur double précision et écrit le résultat dans le vecteur result.
static func asin<U, V>(U, result: inout V) Calcule l'arcsinus de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func atan<U>(U) -> [Double] Retourne un tableau Double contenant l'arctangente (atan) de chaque élément d'un vecteur double précision.
static func atan<U>(U) -> [Float] Retourne un tableau Float contenant l'arctangente de chaque élément d'un vecteur simple précision.
static func atan<U, V>(U, result: inout V) Calcule l'arctangente de chaque élément d'un vecteur double précision et écrit le résultat dans le vecteur result.
static func atan<U, V>(U, result: inout V) Calcule l'arctangente de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func atan2<U, V>(x: U, y: V) -> [Double] Retourne un tableau Double contenant l'arctangente des paires d'éléments (x, y) de deux vecteurs double précision.
static func atan2<U, V>(x: U, y: V) -> [Float] Retourne un tableau Float contenant l'arctangente des paires d'éléments (x, y) de deux vecteurs simple précision.
static func atan2<T, U, V>(x: T, y: U, result: inout V) Calcule l'arctangente des paires d'éléments (x, y) de deux vecteurs double précision et écrit le résultat dans le vecteur result.
static func atan2<T, U, V>(x: T, y: U, result: inout V) Calcule l'arctangente des paires d'éléments (x, y) de deux vecteurs simple précision et écrit le résultat dans le vecteur result.
static func cos<U>(U) -> [Double] Retourne un tableau Double contenant le cosinus de chaque élément d'un vecteur double précision.
static func cos<U>(U) -> [Float] Retourne un tableau Float contenant le cosinus de chaque élément d'un vecteur simple précision.
static func cos<U, V>(U, result: inout V) Calcule le cosinus de chaque élément d'un vecteur double précision et stocke le résultat dans le vecteur result.
static func cos<U, V>(U, result: inout V) Calcule le cosinus de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func cosPi<U>(U) -> [Double] Retourne un tableau Double contenant le cosinus de π fois chaque élément d'un vecteur double précision.
static func cosPi<U>(U) -> [Float] Retourne un tableau Float contenant le cosinus de π fois chaque élément d'un vecteur simple précision.
static func cosPi<U, V>(U, result: inout V) Calcule le cosinus de π fois chaque élément d'un vecteur double précision et stocke le résultat dans le vecteur result.
static func cosPi<U, V>(U, result: inout V) Calcule le cosinus de π fois chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func sin<U>(U) -> [Double] Retourne un tableau Double contenant le sinus de chaque élément d'un vecteur double précision.
static func sin<U>(U) -> [Float] Retourne un tableau Float contenant le sinus de chaque élément d'un vecteur simple précision.
static func sin<U, V>(U, result: inout V) Calcule le sinus de chaque élément d'un vecteur double précision et écrit le résultat dans le vecteur result.
static func sin<U, V>(U, result: inout V) Calcule le sinus de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func sinPi<U>(U) -> [Double] Retourne un tableau Double contenant le sinus de π fois chaque élément d'un vecteur double précision.
static func sinPi<U>(U) -> [Float] Retourne un tableau Float contenant le sinus de π fois chaque élément d'un vecteur simple précision.
static func sinPi<U, V>(U, result: inout V) Calcule le sinus de π fois chaque élément d'un vecteur double précision et stocke le résultat dans le vecteur result.
static func sinPi<U, V>(U, result: inout V) Calcule le sinus de π fois chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func sincos<T, U, V>(T, sinResult: inout U, cosResult: inout V) Calcule à la fois le sinus et le cosinus de chaque élément d'un vecteur double précision et écrit les résultats dans les vecteurs sinResult et cosResult.
static func sincos<T, U, V>(T, sinResult: inout U, cosResult: inout V) Calcule le sinus et le cosinus de chaque élément d'un vecteur simple précision et écrit les résultats dans les vecteurs sinResult et cosResult.
static func tan<U>(U) -> [Double] Retourne un tableau Double contenant la tangente de chaque élément d'un vecteur double précision.
static func tan<U>(U) -> [Float] Retourne un tableau Float contenant la tangente de chaque élément d'un vecteur simple précision.
static func tan<U, V>(U, result: inout V) Calcule la tangente de chaque élément d'un vecteur double précision et écrit le résultat dans le vecteur result.
static func tan<U, V>(U, result: inout V) Calcule la tangente de chaque élément d'un vecteur simple précision et écrit le résultat dans le vecteur result.
static func tanPi<U>(U) -> [Double] Retourne un tableau Double contenant la tangente de π fois chaque élément d'un vecteur double précision.
static func tanPi<U>(U) -> [Float] Retourne un tableau Float contenant la tangente de π fois chaque élément d'un vecteur simple précision.
static func tanPi<U, V>(U, result: inout V) Calcule la tangente de π fois chaque élément d'un vecteur double précision et stocke le résultat dans result.
static func tanPi<U, V>(U, result: inout V) Calcule la tangente de π fois chaque élément d'un vecteur simple précision et écrit le résultat dans result.
func vvsin(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le sinus de chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvsinf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le sinus de chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable.
func vvsinpi(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le sinus de π fois chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvsinpif(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le sinus de π fois chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable.
func vvcos(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le cosinus de chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvcosf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le cosinus de chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable.
func vvcospi(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le cosinus de π fois chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvcospif(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le cosinus de π fois chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable.
func vvcosisin(OpaquePointer, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule simultanément le cosinus et le sinus de chaque élément d'un tableau double précision, en utilisant un pointeur opaque pour les résultats.
func vvcosisinf(OpaquePointer, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule simultanément le cosinus et le sinus de chaque élément d'un tableau simple précision, en utilisant un pointeur opaque pour stocker les résultats.
func vvsincos(UnsafeMutablePointer<Double>, UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule à la fois le sinus et le cosinus de chaque élément d'un tableau double précision et stocke les résultats dans les tableaux mutables correspondants.
func vvsincosf(UnsafeMutablePointer<Float>, UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le sinus et le cosinus de chaque élément d'un tableau simple précision et stocke les résultats dans les tableaux mutables correspondants.
func vvtan(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la tangente de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable.
func vvtanf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la tangente de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable.
func vvtanpi(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la tangente de π fois chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable.
func vvtanpif(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la tangente de π fois chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable.
func vvasin(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule l'arcsinus de chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable.
func vvasinf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule l'arcsinus de chaque élément d'un tableau simple précision et stocke le résultat dans le tableau mutable.
func vvacos(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule l'arccosinus de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable.
func vvacosf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule l'arccosinus de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable.
func vvatan(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule l'arctangente de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable.
func vvatanf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule l'arctangente de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable.
func vvatan2(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafeMutablePointer<Double>, UnsafePointer<Int32>) Calcule l'arctangente de chaque paire d'éléments provenant de deux tableaux double précision et écrit le résultat dans le tableau mutable.
func vvatan2f(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafeMutablePointer<Float>, UnsafePointer<Int32>) Calcule l'arctangente de chaque paire d'éléments provenant de deux tableaux simple précision et écrit le résultat dans le tableau mutable.
static func acosh<U>(U) -> [Double] Retourne un tableau double précision contenant le cosinus hyperbolique inverse de chaque élément d'un vecteur double précision.
static func acosh<U>(U) -> [Float] Retourne un tableau simple précision contenant le cosinus hyperbolique inverse de chaque élément d'un vecteur simple précision.
static func acosh<U, V>(U, result: inout V) Calcule le cosinus hyperbolique inverse de chaque élément d'un vecteur double précision et stocke le résultat dans result.
static func acosh<U, V>(U, result: inout V) Calcule le cosinus hyperbolique inverse de chaque élément d'un vecteur simple précision et écrit le résultat dans result.
static func asinh<U>(U) -> [Double] Retourne un tableau double précision contenant le sinus hyperbolique inverse de chaque élément d'un vecteur double précision.
static func asinh<U>(U) -> [Float] Retourne un tableau simple précision contenant le sinus hyperbolique inverse de chaque élément d'un vecteur simple précision.
static func asinh<U, V>(U, result: inout V) Calcule le sinus hyperbolique inverse de chaque élément d'un vecteur double précision et stocke le résultat dans result.
static func asinh<U, V>(U, result: inout V) Calcule le sinus hyperbolique inverse de chaque élément d'un vecteur simple précision et écrit le résultat dans result.
static func atanh<U>(U) -> [Double] Retourne un tableau double précision contenant la tangente hyperbolique inverse de chaque élément d'un vecteur double précision.
static func atanh<U>(U) -> [Float] Retourne un tableau simple précision contenant la tangente hyperbolique inverse de chaque élément d'un vecteur simple précision.
static func atanh<U, V>(U, result: inout V) Calcule la tangente hyperbolique inverse de chaque élément d'un vecteur double précision et écrit le résultat dans result.
static func atanh<U, V>(U, result: inout V) Calcule la tangente hyperbolique inverse de chaque élément d'un vecteur simple précision et écrit le résultat dans result.
static func cosh<U>(U) -> [Double] Retourne un tableau double précision contenant le cosinus hyperbolique de chaque élément d'un vecteur double précision.
static func cosh<U>(U) -> [Float] Retourne un tableau simple précision contenant le cosinus hyperbolique de chaque élément d'un vecteur simple précision.
static func cosh<U, V>(U, result: inout V) Calcule le cosinus hyperbolique de chaque élément d'un vecteur double précision et stocke le résultat dans result.
static func cosh<U, V>(U, result: inout V) Calcule le cosinus hyperbolique de chaque élément d'un vecteur simple précision et écrit le résultat dans result.
static func sinh<U>(U) -> [Double] Retourne un tableau double précision contenant le sinus hyperbolique de chaque élément d'un vecteur double précision.
static func sinh<U>(U) -> [Float] Retourne un tableau simple précision contenant le sinus hyperbolique de chaque élément d'un vecteur simple précision.
static func sinh<U, V>(U, result: inout V) Calcule le sinus hyperbolique de chaque élément d'un vecteur double précision et stocke le résultat dans result.
static func sinh<U, V>(U, result: inout V) Calcule le sinus hyperbolique de chaque élément d'un vecteur simple précision et écrit le résultat dans result.
static func tanh<U>(U) -> [Double] Retourne un tableau double précision contenant la tangente hyperbolique de chaque élément d'un vecteur double précision.
static func tanh<U>(U) -> [Float] Retourne un tableau simple précision contenant la tangente hyperbolique de chaque élément d'un vecteur simple précision.
static func tanh<U, V>(U, result: inout V) Calcule la tangente hyperbolique de chaque élément d'un vecteur double précision et stocke le résultat dans result.
static func tanh<U, V>(U, result: inout V) Calcule la tangente hyperbolique de chaque élément d'un vecteur simple précision et écrit le résultat dans result.
func vvsinh(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le sinus hyperbolique de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable.
func vvsinhf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le sinus hyperbolique de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable.
func vvcosh(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le cosinus hyperbolique de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable.
func vvcoshf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le cosinus hyperbolique de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable.
func vvtanh(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la tangente hyperbolique de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvtanhf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la tangente hyperbolique de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvasinh(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le sinus hyperbolique inverse de chaque élément d'un tableau double précision et stocke le résultat dans le tableau mutable fourni.
func vvasinhf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le sinus hyperbolique inverse de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvacosh(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule le cosinus hyperbolique inverse de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvacoshf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule le cosinus hyperbolique inverse de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.
func vvatanh(UnsafeMutablePointer<Double>, UnsafePointer<Double>, UnsafePointer<Int32>) Calcule la tangente hyperbolique inverse de chaque élément d'un tableau double précision et écrit le résultat dans le tableau mutable fourni.
func vvatanhf(UnsafeMutablePointer<Float>, UnsafePointer<Float>, UnsafePointer<Int32>) Calcule la tangente hyperbolique inverse de chaque élément d'un tableau simple précision et écrit le résultat dans le tableau mutable fourni.

Types de données

Swift Description
typealias COMPLEX Alias pour un type de nombre complexe en simple précision, représentant une valeur avec une partie réelle et une partie imaginaire de type Float.
typealias DOUBLE_COMPLEX Alias pour un type de nombre complexe en double précision, représentant une valeur avec une partie réelle et une partie imaginaire de type Double.


Dernière mise à jour : Mercredi, le 18 février 2026