| 
									
										
										
										
											2021-02-01 21:31:45 +09:00
										 |  |  | /* ******************************************************************************
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-16 14:02:53 +03:00
										 |  |  |  * | 
					
						
							|  |  |  |  * This program and the accompanying materials are made available under the | 
					
						
							|  |  |  |  * terms of the Apache License, Version 2.0 which is available at | 
					
						
							|  |  |  |  * https://www.apache.org/licenses/LICENSE-2.0.
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-02-01 21:31:45 +09:00
										 |  |  |  *  See the NOTICE file distributed with this work for additional | 
					
						
							|  |  |  |  *  information regarding copyright ownership. | 
					
						
							| 
									
										
										
										
											2019-10-16 14:02:53 +03:00
										 |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
					
						
							|  |  |  |  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | 
					
						
							|  |  |  |  * License for the specific language governing permissions and limitations | 
					
						
							|  |  |  |  * under the License. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: Apache-2.0 | 
					
						
							|  |  |  |  ******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // @author sgazeos@gmail.com
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-02 12:49:41 +03:00
										 |  |  | #include <system/op_boilerplate.h>
 | 
					
						
							| 
									
										
										
										
											2019-10-16 14:02:53 +03:00
										 |  |  | #if NOT_EXCLUDED(OP_igammac)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <ops/declarable/generic/helpers/BroadcastHelper.h>
 | 
					
						
							|  |  |  | #include <ops/declarable/CustomOperations.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-02 12:49:41 +03:00
										 |  |  | namespace sd { | 
					
						
							| 
									
										
										
										
											2019-10-16 14:02:53 +03:00
										 |  |  |     namespace ops { | 
					
						
							|  |  |  |         BROADCASTABLE_OP_IMPL(igammac, 0, 0) { | 
					
						
							|  |  |  |             auto x = INPUT_VARIABLE(0); | 
					
						
							|  |  |  |             auto y = INPUT_VARIABLE(1); | 
					
						
							|  |  |  |             auto z = OUTPUT_VARIABLE(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             BROADCAST_CHECK_EMPTY(x,y,z); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //REQUIRE_TRUE(!y->isB(), 0, "Pairwise OP: you can't divide by bool array!");
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //            auto tZ = BroadcastHelper::broadcastApply({scalar::IGammac, pairwise::IGammac, broadcast::IGammac}, x, y, z);
 | 
					
						
							|  |  |  |             auto tZ = BroadcastHelper::broadcastApply(BroadcastOpsTuple::IGammac(), x, y, z); | 
					
						
							|  |  |  |             if (tZ == nullptr) | 
					
						
							|  |  |  |                 return ND4J_STATUS_KERNEL_FAILURE; | 
					
						
							|  |  |  |             else if (tZ != z) { | 
					
						
							|  |  |  |                 OVERWRITE_RESULT(tZ); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             return Status::OK(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         DECLARE_TYPES(igammac) { | 
					
						
							|  |  |  |             getOpDescriptor() | 
					
						
							|  |  |  |                 ->setAllowedInputTypes(0, {ALL_FLOATS}) | 
					
						
							|  |  |  |                 ->setAllowedInputTypes(1, {ALL_FLOATS}) | 
					
						
							|  |  |  |                 ->setAllowedOutputTypes(0, {ALL_FLOATS}); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |