TRIQS/nda 2.0.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
tblis_interface.hpp
Go to the documentation of this file.
1// Copyright (c) 2024--present, The Simons Foundation
2// This file is part of TRIQS/nda and is licensed under the Apache License, Version 2.0.
3// SPDX-License-Identifier: Apache-2.0
4// See LICENSE in the root of this distribution for details.
5
10
11#pragma once
12
13#include "../tools.hpp"
14
15#include <complex>
16#include <string_view>
17
18namespace nda::tensor::tblis {
19
20 void set(float alpha, tensor_view<float> A, std::string_view idx_A);
21 void set(double alpha, tensor_view<double> A, std::string_view idx_A);
22 void set(std::complex<float> alpha, tensor_view<std::complex<float>> A, std::string_view idx_A);
23 void set(std::complex<double> alpha, tensor_view<std::complex<double>> A, std::string_view idx_A);
24
25 void scale(float alpha, tensor_view<float> A, std::string_view idx_A);
26 void scale(double alpha, tensor_view<double> A, std::string_view idx_A);
27 void scale(std::complex<float> alpha, tensor_view<std::complex<float>> A, std::string_view idx_A);
28 void scale(std::complex<double> alpha, tensor_view<std::complex<double>> A, std::string_view idx_A);
29
30 float reduce(binary_op op, const_tensor_view<float> A, std::string_view idx_A);
31 double reduce(binary_op op, const_tensor_view<double> A, std::string_view idx_A);
32 std::complex<float> reduce(binary_op op, const_tensor_view<std::complex<float>> A, std::string_view idx_A);
33 std::complex<double> reduce(binary_op op, const_tensor_view<std::complex<double>> A, std::string_view idx_A);
34
35 float dot(const_tensor_view<float> A, std::string_view idx_A, const_tensor_view<float> B, std::string_view idx_B);
36 double dot(const_tensor_view<double> A, std::string_view idx_A, const_tensor_view<double> B, std::string_view idx_B);
37 std::complex<float> dot(const_tensor_view<std::complex<float>> A, std::string_view idx_A, const_tensor_view<std::complex<float>> B,
38 std::string_view idx_B);
39 std::complex<double> dot(const_tensor_view<std::complex<double>> A, std::string_view idx_A, const_tensor_view<std::complex<double>> B,
40 std::string_view idx_B);
41
42 void add(float alpha, const_tensor_view<float> A, std::string_view idx_A, float beta, tensor_view<float> B, std::string_view idx_B);
43 void add(double alpha, const_tensor_view<double> A, std::string_view idx_A, double beta, tensor_view<double> B, std::string_view idx_B);
44 void add(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, std::complex<float> beta,
45 tensor_view<std::complex<float>> B, std::string_view idx_B);
46 void add(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A, std::complex<double> beta,
47 tensor_view<std::complex<double>> B, std::string_view idx_B);
48
49 void mult(float alpha, const_tensor_view<float> A, std::string_view idx_A, const_tensor_view<float> B, std::string_view idx_B, float beta,
50 tensor_view<float> C, std::string_view idx_C);
51 void mult(double alpha, const_tensor_view<double> A, std::string_view idx_A, const_tensor_view<double> B, std::string_view idx_B, double beta,
52 tensor_view<double> C, std::string_view idx_C);
53 void mult(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, const_tensor_view<std::complex<float>> B,
54 std::string_view idx_B, std::complex<float> beta, tensor_view<std::complex<float>> C, std::string_view idx_C);
55 void mult(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A, const_tensor_view<std::complex<double>> B,
56 std::string_view idx_B, std::complex<double> beta, tensor_view<std::complex<double>> C, std::string_view idx_C);
57
58} // namespace nda::tensor::tblis
binary_op
Binary operations for tensor operations.
Definition tools.hpp:67
tensor_view< const T > const_tensor_view
Alias for a tensor_view with const value type.
Definition tools.hpp:234
Provides various traits and utilities for the tensor interface.