/** * Hyperbolic Embedding Utilities * * Convert Euclidean embeddings to hyperbolic (Poincaré ball) space * for better representation of hierarchical relationships. * * Features: * - Euclidean to Poincaré ball conversion * - Hyperbolic distance metrics * - Mobius operations (addition, scalar multiplication) * - Exponential and logarithmic maps * * References: * - Nickel & Kiela (2017): "Poincaré Embeddings for Learning Hierarchical Representations" * - Ganea et al. (2018): "Hyperbolic Neural Networks" */ /** * Hyperbolic geometry configuration */ export interface HyperbolicConfig { /** Curvature of hyperbolic space (default: -1) */ curvature?: number; /** Epsilon for numerical stability (default: 1e-15) */ epsilon?: number; /** Maximum norm to prevent numerical issues (default: 1 - 1e-5) */ maxNorm?: number; } /** * Convert Euclidean embedding to Poincaré ball * * Uses exponential map at origin to project Euclidean vectors * into the Poincaré ball model of hyperbolic space. * * @param euclidean - Euclidean embedding vector * @param config - Hyperbolic geometry configuration * @returns Poincaré ball embedding */ export declare function euclideanToPoincare(euclidean: Float32Array | number[], config?: HyperbolicConfig): Float32Array; /** * Convert Poincaré ball embedding back to Euclidean * * Uses logarithmic map at origin to project back to Euclidean space. * * @param poincare - Poincaré ball embedding * @param config - Hyperbolic geometry configuration * @returns Euclidean embedding vector */ export declare function poincareToEuclidean(poincare: Float32Array | number[], config?: HyperbolicConfig): Float32Array; /** * Compute hyperbolic distance in Poincaré ball * * The geodesic distance between two points in the Poincaré ball. * * @param a - First Poincaré embedding * @param b - Second Poincaré embedding * @param config - Hyperbolic geometry configuration * @returns Hyperbolic distance */ export declare function hyperbolicDistance(a: Float32Array | number[], b: Float32Array | number[], config?: HyperbolicConfig): number; /** * Möbius addition in Poincaré ball * * Hyperbolic "addition" operation that respects the ball geometry. * * @param a - First vector * @param b - Second vector * @param config - Configuration * @returns a ⊕ b in hyperbolic space */ export declare function mobiusAdd(a: Float32Array | number[], b: Float32Array | number[], config?: HyperbolicConfig): Float32Array; /** * Möbius scalar multiplication in Poincaré ball * * @param r - Scalar * @param v - Vector in Poincaré ball * @param config - Configuration * @returns r ⊗ v in hyperbolic space */ export declare function mobiusScalarMul(r: number, v: Float32Array | number[], config?: HyperbolicConfig): Float32Array; /** * Compute hyperbolic centroid (Fréchet mean) of multiple points * * Uses iterative optimization to find the centroid in Poincaré ball. * * @param points - Array of Poincaré embeddings * @param config - Configuration * @param maxIter - Maximum iterations (default: 100) * @returns Hyperbolic centroid */ export declare function hyperbolicCentroid(points: Array, config?: HyperbolicConfig, maxIter?: number): Float32Array; /** * Batch convert Euclidean embeddings to Poincaré ball */ export declare function batchEuclideanToPoincare(embeddings: Array, config?: HyperbolicConfig): Float32Array[]; /** * Compute pairwise hyperbolic distances */ export declare function pairwiseHyperbolicDistances(embeddings: Float32Array[], config?: HyperbolicConfig): Float32Array; /** * Check if point is inside Poincaré ball */ export declare function isInPoincareBall(v: Float32Array | number[], config?: HyperbolicConfig): boolean; //# sourceMappingURL=hyperbolic.d.ts.map